Grep:全行の検索と置換


13

コマンド

 grep "foo" myfile.txt

ファイル内の一致するすべての行を出力します。

次に、行全体を別の文字列に置き換えます。どうやってやるの?

回答:


13

行全体の部分文字列に一致する場合は、sedのsコマンドと正規表現を使用して、残りの行を削除できます。

sed -i 's/^.*foo.*$/another string/' myfile.txt

または、c次のコマンドを使用して、一致した行を一度に置き換えます。

sed -i '/foo/ { c \
another string
}' myfile.txt

プロンプトで複数行のコマンドを入力したくない場合は、代わりにスクリプトに入力できます。

$ cat foo.sed
/foo/ { c \
another string
}

$ sed -i -f foo.sed myfile.txt

ありがとう!2番目のオプションを使用すると、次のようになります:sed:-e expression#1、char 0:unmatched `{'
clamp

最初の行の最後に\を入力してReturnキーを押す必要があります-最初の改行を\でエスケープすることが重要です。次に、が別の行にあることを確認}'another stringます。置換は、2番目の行のすべてで、}そこに配置する場合を含みます。
役に立たない

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.