テキストファイルがありますが、test1.txt
犬と日付を含む行を削除する必要があるとします。"29-APR-2015"
これを行うには、次のコマンドを使用します。ただし、行は削除されません。
/DOG/d
私が言及したのは、単にインクルードを削除するのと同じですDOG
。
コマンドファイル(sedcommands)
/DOG,29-APR-2015/d
テスト1.txt
DOG 29-APR-2015
DOG 29-APR-2015
DOG 30-APR-2015
CAT 29-APR-2015
CAT 29-APR-2015
注文する
sed -f sedcommands test1.txt > test2.txt
答え1
GNU sedの使用:
sed '/DOG/{/29-APR-2015/d}' test1
この方法では、すべての注文が可能です。つまり。DOG
この日付の前または後にすることができます。
答え2
POSIX的に:
sed -e '/DOG/!b' -e '/29-APR-2015/!b' -e d file
b
タグを提供しない場合は、最後まで牧場をしてください。
または:
sed '/DOG/{/29-APR-2015/d
}' file
最新の実装はPOSIXで許可されていますが、必須ではない拡張フォームもサポートしていますsed
。{command;}
sed '/DOG/{/29-APR-2015/d;}' file
答え3
/DOG,29-APR-2015/d
DOG
との間にカンマがないため、機能しません9-APR-2015
。この試み。
$ sed -e '/DOG[[:space:]]*29-APR-2015/d' test1.txt
DOG 30-APR-2015
CAT 29-APR-2015
CAT 29-APR-2015
[[:space:]]*
DOG
との間にはゼロ個以上の空白文字が許可されています9-APR-2015
。文字クラスは[:space:]
通常のスペースとタブを受け入れ、Unicodeフォントで使用しても安全です。
答え4
コマンドファイルには次のものを含める必要があります。
/DOG *29-APR-2015/d
つまり、その後DOG
にはゼロ個以上のスペースが続き、その後には指定された日付が続きます。