IFS 读取不作为 nixCraft 示例工作

IFS 读取不作为 nixCraft 示例工作

我有一个以制表符作为分隔符的文本文件:

a   1   956 9723
b   2   2   11432
c   3   1307    2964
c   4   2   12586
d   5   1377    11726
e   6   1735    8416
f   7   1320    10443
g   8   1175    9240
h   9   1598    9357
i   10  1405    2066

我跟着nixCraft 上的示例提取第一列和最后一列:

while IFS="\t" read -r f1 f2 f3 f4
do
    echo "$f1"
    echo "$f4"
done < file.txt

它只返回整行。什么地方出了错?

系统:CentOS 7、bash 4.2

答案1

TAB=`echo 'x' | tr 'x' '\011'`; # tab
while IFS="$TAB" read -r f1 f2 f3 f4 junk; do
   printf '$f1=<%s>\n' "$f1"
   printf '$f4=<%s>\n' "$f4"
done

相关内容