$ cat File1
MNO ABC
MNO ABC
ABC
vzcbjzcb
删除行后,它应如下所示:
MNO ABC
MNO ABC
zcvshskl
答案 0 :(得分:0)
我会选择 Perl ,如下所示:
perl -nle 's/ABC//g if !m/MNO/; print if length($_)' File1
那说...... “自动处理File1
处理行结尾的所有行(-nle
)。如果行没有,则替换(替换)ABC
匹配MNO
。如果该行不为空,请打印该行。“
请注意,这不会在输入文件中保留空行,但我相信这不是问题。
你可以用 awk :
做同样的事情awk '!/MNO/{gsub(/ABC/,"")} length($0)' File1
或 sed :
sed -e '/MNO/!s/ABC//g' -e '/^\s*$/d' File1
如果你真的,真的想用 bash :
来做#!/bin/bash
while read line; do
[[ ! $line =~ MNO ]] && line=${line/ABC/}
[ ${#line} -gt 0 ] && echo $line
done < File1