Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk删除a";稀疏的;文本文件_Awk - Fatal编程技术网

awk删除a";稀疏的;文本文件

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列存在时才

我有一个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列存在时才删除第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