awk删除a";稀疏的;文本文件
我有一个4列的文本文件,就像这个一样awk删除a";稀疏的;文本文件,awk,Awk,我有一个4列的文本文件,就像这个一样 2010-01-03 10:58:00 268435456 2010-01-03 10:59:00 268435456 2010-01-03 11:00:00 -134 0 2010-01-03 11:01:00 -131 0 ... 在第3列中可以找到我想要保留的值,在第4列中可以找到错误代码 但是,这两列并非每行都有值。因此awk'!($4=“”)文件仅当第3列存在时才
2010-01-03 10:58:00 268435456
2010-01-03 10:59:00 268435456
2010-01-03 11:00:00 -134 0
2010-01-03 11:01:00 -131 0
...
在第3列中可以找到我想要保留的值,在第4列中可以找到错误代码
但是,这两列并非每行都有值。因此awk'!($4=“”)文件
仅当第3列存在时才删除第4列。否则,错误代码将写入第3列,从而与我的观察值混淆
如何才能真正放弃第4列?“字段通常由空格序列(空格、制表符和换行符)分隔,而不是由单个空格分隔。一行中的两个空格不分隔空字段。字段分隔符FS的默认值是包含单个空格的字符串。”“。如果awk以通常的方式解释此值,则每个空格字符将分隔字段,因此一行中的两个空格将在它们之间形成一个空字段。这种情况不会发生的原因是,作为FS值的单个空格是一种特殊情况,它用于指定字段定界的默认方式
解决方案,在您的情况下,字段由制表符或空格分隔
awk -F "[\t ]" '{$4=""}1' file
或
你得到
2010-01-03 10:58:00
2010-01-03 10:59:00
2010-01-03 11:00:00 -134
2010-01-03 11:01:00 -131
2010-01-03 10:58:00
2010-01-03 10:59:00
2010-01-03 11:00:00 -134
2010-01-03 11:01:00 -131
跳过最后一列。
awk '{$NF=""}1' file
输出
2010-01-03 10:58:00
2010-01-03 10:59:00
2010-01-03 11:00:00 -134
2010-01-03 11:01:00 -131
如果要删除的列始终是最后一列,请使用
$NF
而不是$4
。
2010-01-03 10:58:00
2010-01-03 10:59:00
2010-01-03 11:00:00 -134
2010-01-03 11:01:00 -131