ファイルから特定の文字列を含む行を削除する方法

ファイルから特定の文字列を含む行を削除する方法

次のテキストファイルを参照してください。

/home/user1/dir1
/home/user1/dir2
/home/user1/
/home/user1/dir1/dir11

目標は "/home/user1/" だけで他に何もない行を削除することですので、最終結果は次のようになります。

/home/user1/dir1
/home/user1/dir2
/home/user1/dir1/dir11

以下のコードを試しましたが、/home/user1/を含むすべての行が削除されました。何をすべきか知っていますか?

grep -v "/home/user1/" /home/user1/input.txt > tmpfile && mv tmpfile /home/user1/output.txt

ベストアンサー1

アンカーポイントを使用して、線の開始と終了を表示します(^開始と$終了)。その後、状況は次のようになります。

$ grep -v '^/home/user1/$' file
/home/user1/dir1
/home/user1/dir2
/home/user1/dir1/dir11

または、次の-xオプションを使用できます。

-x, --line-regexp         match only whole lines

それから

$ grep -vx '/home/user1/' file
/home/user1/dir1
/home/user1/dir2
/home/user1/dir1/dir11

あなたのgrepコマンドは予期されたタスクを実行しています。一致するすべての行を見つけます。含む /home/user1/、正確に一致しません。

おすすめ記事