ファイルに「mode v」などの単語があります。 「mode sv」に変えたいです。しかし、パターンの後にスペースがあるため、すべての努力は失敗しました。
答え1
sed
このように検索して置き換えることができます。
$ sed 's/mode v/mode sv/g'
はい
次のサンプルファイルがあるとしましょう。
$ cat afile.txt
mode v modev mode v
blah
blah blah modev mode
blah
modev mode v
sed
ファイルを検索/交換し、次のようにバックアップを維持するために使用できます。
$ sed -i.bak 's/mode v/mode sv/g' afile.txt
これで2つのファイルがあります。
$ ls -ltr | grep afile
-rw-rw-r--. 1 slm slm 64 Sep 23 20:13 afile.txt.bak
-rw-rw-r--. 1 slm slm 67 Sep 23 20:15 afile.txt
元のテキストが次のように修正されました。
$ cat afile.txt
mode sv modev mode sv
blah
blah blah modev mode
blah
modev mode sv
メモ:保証された単語境界で必要に応じてmode v
検索にサフィックスを追加できます\b
。
$ sed -i.bak 's/mode v\b/mode sv/g' afile.txt
答え2
コメントの解決策は、modeが行の最初の単語であり、「mode」の後のすべての単語を「sv」に置き換える場合にのみ機能します。あなたの質問で見ると、これはあなたの意図ではないと思います。複雑にする理由がなく、単純に保つ
sed 's/mode /mode s/g'
動作する必要があります。または
sed s/"mode "/"mode s"/g