私のファイルには次のテキストブロックがあります。
test3.legacy test4.legacy test3 test3.kami
test3
ただ全体的に検索して何でも交換したいです。残念ながら、すべての試みが削除されました。テスト3でtest3.legacy
とtest3.kami
。私は試した:
sed 's/^test3://g' myfile.txt
sed 's/\btest3\b//g' myfile.txt
sed 's/\<test3\>//g' myfile.txt
まったく運がありません。この問題を解決する方法についてのアイデアはありますか?
編集する:ほとんどの試みの結果は次のとおりです。.legacy test4.legacy .kami
ベストアンサー1
これはあなたが望むものですか?
$ sed 's/\(^\| \)test3\( \|$\)/\1/g' file
test3.legacy test4.legacy test3.kami
これは次のことを意味します。
substitute
(^ start of line OR space)
test3
(space OR end of line)
with match 1 (AKA space or start of line)
修正する:
良い人がとても優雅に表現したようにツイートをサイトに埋め込むこれはいくつかの状況を解決しません。ポータブル部分も強調してください。バラより次のことに答えてください。。
GNUバリアントは次のことを行います。(希望)、例:
sed 's/\(^\| \)\(test3\( \|$\)\)*/\1/g'
# Or perhaps:
sed 's/\(^\| \)\(test3\( \|$\)\)\+/\1/g'
重複一致を処理します。あるいは、人が複数のスペースなどを処理することもできます。入力によって異なります。
オーフード
あるいは、おそらく(ただ出発点に):
sed 's/\Wtest3\W/ /g'
私の考えではこれではないようです:
$ sed 's/test3\.\?[^ ]* *//g' file
test4.legacy