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