无论如何,我们可以删除文件中的行,如下所示。
grep {SearchPattern} {file} |切-c 1-9 | Sed {file}
无论我在搜索什么,实际上可能比我想要删除的行少。 我想实际搜索并获取前9个字符并再次搜索并删除输出中的任何行。
我的输入文件如下所示。
0002206993022 Enrollment Status Terminated 08/01/201412/31/9999
0003119343022 Enrollment Status Terminated 05/28/201512/31/9999
0003119343009999 Pay Status N/A 09/10/201405/28/2015
你可以搜索所有“已终止”的人并通过在第一列中取前9位来获取他们的ID。我想删除他们的所有记录,无论是支付状态还是注册状态或其他
答案 0 :(得分:2)
你想要这样的东西:
awk '/Terminated/{$0=substr($0, 1, 9);print "^" $0}' file | grep -vf - file
<强>更新强>
尝试(非GNU
grep):
awk '/Terminated/{$0=substr($0, 1, 9);print "^" $0}' file | grep -vf /dev/stdin file
<强>测试强>
$ cat file
0002206993022 Enrollment Status Terminated 08/01/201412/31/9999
0003119343022 Enrollment Status Terminated 05/28/201512/31/9999
0003119343009999 Pay Status N/A 09/10/201405/28/2015
1003119343009999 Pay Status N/A 09/10/201405/28/2015
$ awk '/Terminated/{$0=substr($0, 1, 9);print "^" $0}' file | grep -vf - file
1003119343009999 Pay Status N/A 09/10/201405/28/2015