我需要删除:
guide_change_names \
-design { lalala } \
{
}
来自文本文件。 规则: {}之间应该没有字 拉拉可能是任何一个词。
之前的文字:
guide_change_names \
-design { lalala } \
{
ha hah haha
}
guide_change_names \
-design { lalala } \
{
}
guide_change_names \
-design { lalala } \
{
lal lal lal
}
guide_change_names \
-design { lalala } \
{
}
文字后:
guide_change_names \
-design { lalala } \
{
ha hah haha
}
guide_change_names \
-design { lalala } \
{
lal lal lal
}
答案 0 :(得分:3)
您可以使用gawk。如果第二对花括号之间只包含空格,请将记录分隔符RS
设置为guide_change_names...}..}
并将其覆盖为""
awk --re-interval -v RS='guide_change_names([^}]+[}]){2}\\n' \
'RT ~ /[{][[:space:]]+[}]\n$/{RT=""};{printf "%s%s", $0, RT}' file.txt
答案 1 :(得分:3)
尝试使用 GNU awk
awk 'BEGIN { RS="guide_change_names[^{]*{[^}]*}[^{]*{[ \n]*}[ \n]*" } 1' file
这里的想法是将Record Separator(RS)设置为要删除的模式。
输出:
guide_change_names \
-design { lalala } \
{
ha hah haha
}
guide_change_names \
-design { lalala } \
{
lal lal lal
}