389

次のような特定の行を含むテキストファイルがあります

sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext

上記の行全体を次のように置き換える必要があります

This line is removed by the admin.

検索キーワードはTEXT_TO_BE_REPLACED

これにはシェルスクリプトを書く必要があります。を使用してこれを達成するにはどうすればよいsedですか?

4

14 に答える 14

581

changeコマンドを使用して行全体を置き換え、-iフラグを使用してその場で変更を行うことができます。たとえば、GNU sed を使用すると、次のようになります。

sed -i '/TEXT_TO_BE_REPLACED/c\This line is removed by the admin.' /tmp/foo
于 2012-06-28T13:15:02.697 に答える
185

.*行全体を置き換えるには、前後にワイルドダード()を使用する必要があります。

sed 's/.*TEXT_TO_BE_REPLACED.*/This line is removed by the admin./'
于 2012-06-28T13:08:26.403 に答える
2
bash-4.1$ new_db_host="DB_HOSTNAME=good replaced with 122.334.567.90"
bash-4.1$ 
bash-4.1$ sed -i "/DB_HOST/c $new_db_host" test4sed
vim test4sed
'
'
'
DB_HOSTNAME=good replaced with 122.334.567.90
'

それは正常に動作します

于 2017-03-10T08:48:48.013 に答える
0

それは上記のものと同様です..

sed 's/[A-Za-z0-9]*TEXT_TO_BE_REPLACED.[A-Za-z0-9]*/This line is removed by the admin./'
于 2013-05-30T06:57:37.813 に答える
0

以下のコマンドは私のために働いています。変数を操作しているのは

sed -i "/\<$E\>/c $D" "$B"
于 2019-09-19T09:23:32.130 に答える
-1

私は非常に頻繁に正規表現を使用してファイルからデータを抽出し、それを使用してリテラルの引用符\"//何も置き換えません:-)

cat file.csv | egrep '^\"([0-9]{1,3}\.[0-9]{1,3}\.)' | sed  s/\"//g  | cut -d, -f1 > list.txt
于 2015-11-08T21:40:37.717 に答える