0

次のようなファイルの行を削除しようとしています。

CNAME mydomain.com で 1800 をテストします。

Mountain Lion で sed を使用しており、次のことを試していますが、エラーは発生しませんが、行は削除されません。

sed -i -e '/$regex/d' $file

また

sed -i "" -e '/$regex/d' $file

$regex は上記の行を含む式であり、$file はその行があるファイルの名前です。

どんな助けでも感謝します。

4

3 に答える 3

0

Mountain Lion (v10.8.2) は、sed -i "" -e '/$regex/d' $file

[Mar 12 17:22] [jnovack@growlithe ~]$ more test.php
<?php
echo "Test php echo 1";
echo "Test echo 2";
?>
[Mar 12 17:22] [jnovack@growlithe ~]$ sed -i "" -e "/php/d" test.php
[Mar 12 17:22] [jnovack@growlithe ~]$ more test.php
echo "Test echo 2";
?>
于 2013-03-12T21:24:54.943 に答える
0

これはSed コマンド find and replace in file ...のほぼ複製であり、最も移植性の高い答えはそこと同じです:

sed -e '/$regex/d' $file >$file.tmp && mv $file.tmp $file

...そこに与えられた理由と利点があります。移植性について懸念がある場合、POSIX 仕様は優れたリソースです。UNIX コマンドの一般的なサブセットが記述されているため、イライラするほど制限されていることがよくありますが、遭遇する可能性のあるすべての UNIX にかなり確実に存在します。

于 2013-03-12T20:58:54.790 に答える