こんにちは質問があります。あちこちで検索してみましたが見つかりません。
sedコマンドを使用して、特定の文字列を含む行を削除したいと思います。テキストファイルには同じ文字列を含む行があります。 sedコマンドは最初の文字列のみを削除し、残りは削除しないでください。どうすればいいですか?同じ文字列が不足するまで何度もアクティブになるシェルスクリプトでこれを使用します。
たとえば、次の行があります。
aaa
aaa
aaa
bbb
ccc
行1つだけ削除したい aaa
答え1
より簡単なことは次のとおりですawk
。
awk '!/aaa/ || n++' < your-file
現在のレコードが含まれていない場合は印刷するかaaa
、含まれている場合は一部のカウンタをゼロ以外の値に事後インクリメントします(最初の発生後に発生します)。
GNUを使用すると、sed
次のことができます。
sed '0,/aaa/{//d}' < your-file
aaa
ファイルの先頭から最初に表示される行までの行範囲に属する行のみを削除しますaaa
。
よりsed FAQGNU以外のsedに対して可能な他の方法。