ファイルに「test」という文字列が含まれている場合は、sedを使用してファイルの4行目でのみ文字列を変更する必要があります。
基本的に私が今得るものは次のとおりです。
sed '/test/ s/abc/zz/g' sample
これはデフォルトで行を調べてテストがあることを確認し、その行に存在する場合はabcをzzに変更します。
しかし、どのようにして4行目だけをターゲティングできますか?
頑張った
sed '/test/ 4s/abc/zz/g' sample
■ 前に 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