特定の番号のみが含まれている場合、sedを使用して行全体を削除する


8

txtファイルがあります

123
456
789
456
123456

ファイル(123)から特定の文字を削除したい。私が試した

$ sed -i '/123/d' dummy.sh
$ vi dumm.txt
456
789
456

以下のコマンドで、両方の単語(123123456)を実行すると削除さ123れますが、ファイルからのみ削除する必要があります

$ sed -i 's/123//g' dummy.sh
$ vi dumm.txt
456
789
456
456

以下のコマンドを実行する123と、nullに置き換えられます。

特定の番号のみが含まれている行全体を削除する方法を誰かが言うことができますか?


2
一言で言えば- アンカー
鋼のドライバー2017

私はあなたが求めているものを手に入れませんでしたか?
Rak kundra 2017

1
このタスクでsedを使用してもまったく問題ありませんが、grepは、パターンに一致する入力の行を表示または非表示にするために特別に作成されたツールです。この場合、次のgrepコマンドでも同じことが行われます。grep -E -v '^ 123 $' dumm.txt
Gnudiff

4
@Gnudiff grepあなたが使うのがそのようなものである場合、私は何の利点も見ていません。しかし、それが原因それのオプションをいくつかのタスクのために優れていることができます:grep -xv 123
フィリポス

回答:


19

行全体を削除しようとしているの123か、それとも空の行に置き換えようとしているのかは不明です。とにかく、パターンに行の最初^と最後のアンカーを追加するだけ$です:

sed -i '/^123$/d' dummy.sh      #delete whole line
sed -i 's/^123$//' dummy.sh     #replace with empty line

うん、私は私の回答を得てくれてありがとう:)。ここで行全体を削除しようとしています。
Rak kundra 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.