awk不正确的标签空间

时间:2013-10-17 20:38:09

标签: bash awk

我将以下几行保存到txt文件中:

 Mike Tyson    1    2    3    4    5
 Alì     1    2   3   4   5

每个不同的字段都使用制表符分隔,但在第一个字段中,我可以只用空格分隔2个单词。 我如何通过awk得到正确的解释?我只想要像这样的标签分隔的值:

 $a=mike tyson
 $b=1
 $c=2
 etc etc....

现在,我正在使用一段时间来读取每一行,由

完成
 done < <(awk 'NR>0' file.txt)

但是此命令将值“mike tyson”视为两个不同的字段。

2 个答案:

答案 0 :(得分:3)

尝试更改为:

done < <(awk -F"\t" 'NR>0' file.txt)

awk确实看到任何空格(空格和制表符)作为提交的分隔符。 将其设置为仅选项卡,可防止它将文件与空格分开。

答案 1 :(得分:1)

问题不在于awk,因为您正在解释bash中的列。

也许你正在寻找这样的东西:

IFS=$'\t'
while read a b; do
    echo a=$a
    echo b=$b
done < file.txt

在您的示例代码中awk似乎没有扮演任何角色。