15

次の形式のファイルがあります。

interesting text-MIB blah blah blah
VERY INTERESTING TEXT
interesting text-MIB blah blah blah

「-MIB」文字列を含む各行で、この文字列に続くテキストを行末まで削除したいと思います。

次のコマンドは意図したとおりに機能するようです。

sed -i -n -e 's/-MIB.*$/-MIB/p' ./myfile

私の問題は、パターンが見つからない行も削除されることです。ここで、「VERY INTERESTING TEXT」という行が削除されます。私はsedにあまり詳しくありません。私は何を間違っていますか?sed はこの種の治療に適していますか?

4

3 に答える 3

5

あなたの を編集しましsedた。これを試して、

sed -i.bak 's/-MIB.*$/-MIB/g' ./myfile

ここ、

-i - 元のファイルの変更を行い、.bak 拡張子の元のファイルのバックアップを取ります

于 2013-06-25T12:32:03.340 に答える
2

オプションを除外する必要があり-nます。http://www.gnu.org/software/sed/manual/sed.html#index-g_t_002d_002dquiet-7をチェックしてください

于 2013-06-25T12:22:27.307 に答える
2

sed -nオプションは、ステートメントpの後にオプションを置くと後で有効になるデフォルトの印刷を抑制します。sed

sed上記の例では、すべての行の印刷を抑制し、置換が正常に行われた行のみを印刷することを伝えています。その結果、置換が行われない行は印刷されません。

コマンドから-nオプションを削除する必要があります。p

sed -ie 's/-MIB.*$/-MIB/' ./myfile
于 2013-06-25T12:35:40.267 に答える