2011-11-09 7 views
21

shの "string"で始まるファイル内のすべての行を削除するにはどうすればよいですか?私はsedコマンドの使用について考えていました。あなたのsed -iオプションをサポートしている場合、あなたが行うことができ、場所にそれを行うにはunix shで "string"で始まる行をすべて削除しますか?

答えて

25
grep -v '^string' yourfile.txt > stripped.txt 
+0

どのように同じファイルのうちはどうですか? – t3hcakeman

+0

grepでそれを実際に行うことはできません。一時ファイルに出力して、 'mv tempfile origfile'することができます。本当のインプレース編集が必要な場合は、sed/perl/awkを使用する必要があります。 –

+0

どうすればそれらを使うのですか? :D – t3hcakeman

26

 
sed -i '/^string/d' input-file 
+2

sedはファイル拡張子'-i'を使うときには、OS Xでは非常に賢明でなければならないので、明示的に一重引用符を使う必要があります:' sed -i ''/^ string/d 'input-file' –

+2

OSXでは、 '-i'をサポートしていません!私の個人的な好みは '-i'を決して使用せず、代わりにシェルでリダイレクトを行うことです。 –

+0

'-e'は必要ありませんか? – Mausy5043

0

SEDとあなたの答えではgrepが自分の友達のawkが欠落しています

awk '!/^string/' inputfile > resultfile 
+1

同じファイルにする必要があります – t3hcakeman

0

あなたはExモードでVimを使用することができます。

ex -sc g/^string/d -cx file 
  1. gが一致するすべての行

  2. d、削除を選択

  3. x保存して閉じ

関連する問題