![如果找到模式则删除记录集](https://linux22.com/image/106658/%E5%A6%82%E6%9E%9C%E6%89%BE%E5%88%B0%E6%A8%A1%E5%BC%8F%E5%88%99%E5%88%A0%E9%99%A4%E8%AE%B0%E5%BD%95%E9%9B%86.png)
它可能是重复的,但不要标记这一点,伙计们,我正在执行一些手动任务无法得到精确的解到目前为止,已删除 45000 行中的 5000 行,尝试使其尽可能简单
订购阿尔法 设施: 201 ZZZ COUNTRY 错误跟踪: Kotak:NA 浸泡:NA NOUN:XP 噢噢噢噢噢噢 噢噢噢噢噢噢林 AMO 订单 # P/PROLHSCNDKMDDCN LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y 下令埋葬 设施: 201 ZZZ COUNTRY 错误跟踪: Kotak:NA 浸泡:NA NOUN:XP 噢噢噢噢噢噢 噢噢噢噢噢噢林 AMO 订单 # P/PROLHSCNDKMDDCN LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ903901 A/A AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y 订购铝 设施: 201 ZZZ COUNTRY 错误的踪迹: Kotak:NA PAT:NA NOUN:AP 噢噢噢噢噢噢 噢噢噢噢噢噢林 AMO 订单 # P/PROLHSCNDKMDDCN LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ903901 U/U AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX Y/Y WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y 订购 AL123 ...续...
如果NOUN :XP
找到A/A
&&K/K
则从文件中删除这些类型的记录
为什么大多数脚本都会失败,因为像这样的条件(如果 NOUN :AP 和 A/A && K/K 存在)它也显示该记录...或者像这样的条件(如果 NOUN :XP 带有 A/Z && K /Z)它也显示该记录...我需要删除这些记录而不是保留它们。
输出---->
订购阿尔法 设施: 201 ZZZ COUNTRY 错误跟踪: Kotak:NA 浸泡:NA NOUN:XP 噢噢噢噢噢噢 噢噢噢噢噢噢林 AMO 订单 # P/PROLHSCNDKMDDCN LAM uii ii oo --- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- --- -- -- BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y
注意NOUN [small space is there]:XP
,行和列是动态的。
答案1
awk '
function print_record() {
if (record ~ /Stack :IR/ && record ~ /F\/F/ && record ~ /X\/X/) return
printf "%s", record
}
tolower($1) == "order" {if (NR > 1) print_record(); record = ""}
{record = record $0 ORS}
END {print_record()}
' file
根据您的编辑,需要更改的是:
function print_record() {
if (record ~ /NOUN: XP/ && record ~ /A\/A/ && record ~ /K\/K/)
printf "%s", record
}