删除文件中 IP 之间的通配符条目

删除文件中 IP 之间的通配符条目

我有一个非常长的文件(每天生成超过 4000 行),格式如下。

yqiemmtcveihai

test-trans

10.227.30.66

<----------->

14.192.17.143

<----------->

peuddnbtmzdptw

Ttest-trans1

10.227.30.67

<----------->

14.192.17.142

<----------->

cqykfavuxpuqiq

Med

202.21.32.218

<----------->

hziuqbvuncwkie

Myubun

202.21.32.230

<----------->

我只想删除<----------->IP 之间的条目。因此结果应该是这种格式。

yqiemmtcveihai

test-trans

10.227.30.66

14.192.17.143

<----------->

peuddnbtmzdptw

Ttest-trans1

10.227.30.67

14.192.17.142

<----------->

cqykfavuxpuqiq

Med

202.21.32.218

<----------->

hziuqbvuncwkie

Myubun

202.21.32.230

<----------->

有人能给我推荐一个脚本(最好是 bash 脚本)来实现这个吗?我绞尽脑汁,但还是想不出。

答案1

我只想删除 IP 之间的 <--------> 条目。

假设您的问题可以重述为“我想删除包含的行<----------->,但前提是后面跟着一个 IP 地址”,那么下面的示例可能适合您。

其中大部分是对这个问题

sed

sed -E '$!N;s/<----------->\n(([0-9]{1,3}\.){3}[0-9]{1,3})/\1/;P;D' input.txt

awk

awk 'NR==1 {l=$0; next}
     /^([0-9]{1,3}\.){3}[0-9]{1,3}$/ {
       if(l == "<----------->") { l=$0; next }
     }
     {print l; l=$0}
     END { print l }' input.txt

perl

perl -00 -pe 's/<----------->\n((\d{1,3}\.){3}\d{1,3})/$1/g' input.txt

Python

python -c \
  "import re; print re.sub(r'^<----------->\n((\d{1,3}\.){3}\d{1,3})$',
                           r'\1', open('input.txt').read(), flags=re.M),"

相关内容