我正在处理一个文件,其中字段由单个空格分隔.
awk将FS“解释为”一个或多个空格“,当其中一个字段为空时,它会误读我的文件.
我尝试使用“没有空格的空格”(“(?!)”)作为FS,但是awk不支持负向前瞻.简单的谷歌查询,如“单一空间字段分隔符awk”只发送到手册页解释FS =“”的特殊处理.我一定错过了相关的手册页……
如何使用单个空格作为awk字段分隔符?
解决方法
这应该工作
$echo 'a b' | awk -F'[ ]' '{print NF}' 5
在哪里,这将所有连续的白色空间视为一个.
$echo 'a b' | awk -F' ' '{print NF}' 2
基于注释,它需要特别考虑,空字符串或空格作为字段值是非常不同的东西可能不是一个很好的匹配白色空间分隔内容.
例如,我建议使用剪切和更改分隔符进行预处理
$echo 'a b' | cut -d' ' -f1,3,5 --output-delimiter=,a,b