单个空格作为字段分隔符与awk

时间:2016-03-15 10:15:53

标签: awk gawk

我正在处理一个文件,其中字段由单个空格分隔。

awk将FS " "解释为“一个或多个空格”,当其中一个字段为空时,它会误读我的文件。

我尝试使用“没有空格的空格”(" (?! )")作为FS,但是awk不支持负向前瞻。简单的谷歌查询,如“单一空间字段分隔符awk”只发送到手册页解释FS=" "的特殊处理。我一定错过了相关的手册页......

如何使用单个空格作为awk的字段分隔符?

1 个答案:

答案 0 :(得分:17)

这应该有效

$ echo 'a    b' | awk -F'[ ]' '{print NF}'
5

其中,这将所有连续的空格视为一个。

$ echo 'a    b' | awk -F' ' '{print NF}'
2

基于评论,需要特别考虑,空字符串或空格作为字段值是非常不同的东西可能不是一个很好的匹配白色空格分隔内容。

我建议使用cut进行预处理并更改分隔符,例如

$ echo 'a    b' | cut -d' ' -f1,3,5 --output-delimiter=,
a,,b