Unix 通过将搜索模式管道化到Sed中删除文件中的行
我们是否可以删除以下文件中的行 grep{SearchPattern}{file}| cut-c1-9 | Sed{file} 无论我在搜索什么,实际出现的行数都可能少于我要删除的行数。 我想实际搜索并获取前9个字符,然后再次搜索并删除输出中的任何行 我的输入文件如下所示Unix 通过将搜索模式管道化到Sed中删除文件中的行,unix,sed,grep,aix,Unix,Sed,Grep,Aix,我们是否可以删除以下文件中的行 grep{SearchPattern}{file}| cut-c1-9 | Sed{file} 无论我在搜索什么,实际出现的行数都可能少于我要删除的行数。 我想实际搜索并获取前9个字符,然后再次搜索并删除输出中的任何行 我的输入文件如下所示 0002206993022 Enrollment Status Terminated 08/01/201412/31/9999 00
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。我想删除他们的所有记录,无论是支付状态、注册状态还是任何您想要的类似内容:
awk '/Terminated/{$0=substr($0, 1, 9);print "^" $0}' file | grep -vf - 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
尝试(非GNUgrep):
测试:
$ 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
请提供正确的输入数据和输出数据。@Mark,这有帮助吗?请你现在回答,这是输入。输出结果如何?很抱歉,至少对我来说,还不清楚您想要什么。我认为OPS希望找到所有终止人员的ID,并删除所有记录(也是
Pay Status
),从找到的ID.Excellant开始,但不幸的是,sysin的“-”在AIX中不起作用。我正在犯错误。“grep:无法打开-”谢谢,我需要在我的操作系统中找到stdin的路径。我选中了/bin/stdin、/etc/stdin、/dev/stdin。@Ahmad,试试:/proc/self/fd/0
@Ahmad,或者试试:grep-vf