我的文字有以下结构
bla bla more bla bla
$
PART / 4402000LLINK 4401001
NAME ADHESIVE 8.0 mm LLINK Property
8. 8. 2
END_PART
$
some other bla bla
但是包含PART的行也可以是:
PART / 4402000 LLINK 4401001
或:
PART / 4402000 LLINK 4401001
严格来说,LLINK可以占据16到23列。 现在我想删除图案线之间的所有线条。第一个模式是包含PART和此LLINK的行。第二种模式是包含END_PART的行。所以最后我会有这个:
bla bla more bla bla
$
$
some other bla bla
我正在使用CentOS:
> echo $SHELL
/bin/tcsh
所以,我可以在tcsh中使用sed或awk,例如你能帮忙吗。谢谢
答案 0 :(得分:3)
可以使用此sed
命令。
sed -i -r '/PART.*LLINK/,/END_PART/d' file
答案 1 :(得分:0)
使用awk,这似乎有效:
$ cat file
bla PART bla more bla bla
$
PART / 4402000LLINK 4401001
NAME ADHESIVE 8.0 mm LLINK Property
PART
8. 8. 2
END_PART
$
some other bla bla
AAAAA
PART / 4402120 LLINK 4401001
NAME ADHESIVE 8.0 mm LLINK Property
PART
AAAAAAAAAA
8. 8. 2
END_PART
$AAAA
AAAAAsome other bla bla
awk '{if (($0!~/PART/ || $0!~/LLINK/) && stop == 0) {print} else {if ($0~/END_PART/) {stop=0} else {stop=1}}}' file
bla PART bla more bla bla
$
$
some other bla bla
AAAAA
$AAAA
AAAAAsome other bla bla
希望这有帮助!