aaaaaaaaa
bbbbbbbbb
-th ccccccccc_RD \
DDDDDDDD
FFFFFFFF
-th GGGGGGG_RD \
使用 sed/grep/awk 等,在上面的文本中,如果一行以“RD \”结尾,则在行开头将“-th”替换为“-to”。期望的输出:
aaaaaaaaa
bbbbbbbbb
-to ccccccccc_RD \
DDDDDDDD
FFFFFFFF
-to GGGGGGG_RD \
任何帮助是极大的赞赏。
答案1
这应该有效:
sed 's/^-th\(.*RD \\\)/-to\1/' foo.txt
这有点复杂,因为\
它是一个特殊字符,需要逃脱了。由于转义是自己完成的\
,因此匹配文字的方式\
是\\
。和用于捕获匹配的模式,然后在替换中引用\(
该模式。\)
\1
Perl 中的语法更简单,因为括号不需要转义:
perl -pne 's/^-th(.*RD \\)/-to$1/' foo.txt
在 awk 中你会这样做:
awk '/RD \\$/{$1="-to"}{print}' foo.txt