sedで特定のフィールドの特定の文字列を置換したいです。
以下のテキストファイルの8フィールド目に”tera66”という文字列が含まれていた場合、
その部分を”tera44”に置換したいです。
txt
124 ora 2/4 0:00 ! 5 taro ora_tera66g 226 ora 2/4 0:00 ! 5 taro ora_tera66g 329 ora 2/4 0:00 ! 5 taro ora_tera66g 431 a_tera66 2/4 0:00 ! 5 taro ora_tera66g 539 ora 2/4 0:00 ! 5 taro ora_tera66g
これを
txt
124 ora 2/4 0:00 ! 5 taro ora_tera44g 226 ora 2/4 0:00 ! 5 taro ora_tera44g 329 ora 2/4 0:00 ! 5 taro ora_tera44g 431 a_tera66 2/4 0:00 ! 5 taro ora_tera44g 539 ora 2/4 0:00 ! 5 taro ora_tera44g
にしたいです。
awkとsedを使い試してみました。
しかし、awkだとフィールドの指定はうまくいくのですが空白の区切りが詰めて表示されてしまうためフォーマットが崩れます。
awk
1cat test.txt | awk '{gsub(/tera66/,"tera44",$8); print }'
sedだとフォーマットは崩れてしまわないのですが、4行目のtera66まで置換されてしまいます。
sed
1sed 's/tera66/tera44/g'
正規表現を使い、sedで8フィールド目を指定しようとしているのですが、思い通りの結果が出ません。
sed
1sed 's/[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]tera66/tera44/g'
アドバイスいただけると嬉しいです。
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/06/22 01:22