ファイル内の文字列に「test」という文字列が含まれている場合、4行目のみsedを使用して文字列を変更する必要があります。
つまり、私が今得たものは次のとおりです。
sed '/test/ s/abc/zz/g' sample
これは基本的に行を調べてテストがあるかどうかを確認し、その行にある場合は abc を zz に変更します。
しかし、4行目だけの場合はどうすればよいでしょうか。
私は試した
sed '/test/ 4s/abc/zz/g' sample
s の前に 4 を追加しても機能しません。
答え1
一方通行:
sed -e '4 {
/test/s/abc/zz/g
}' <file
答え2
よく分かりませんが、このようなものが機能するでしょうか?
awk 'NR==4 {print $0}' filename.txt | grep 'test' | sed 's/abc/xyz/g'
答え3
別の方法:
まず、文字列「test」を含む行を見つけます。
LINE=$(grep "テスト" ファイル -n | awk '{print $1}' | cut -d ':' -f1 | xargs)
次に、その変数 LINE を使用して次の操作を実行します。
sed "s$LINEs/abc/zzz/g" ファイル
答え4
これを使えば
sed -i '4s/old_text/new_text/g' file_name