3つのコマンドのうちの1つを使用したいsed(番号範囲)

3つのコマンドのうちの1つを使用したいsed(番号範囲)

テキストファイルがあります。 (テスト.txt)

1970-01-01
1971-01-01
1972-01-01
1973-01-01
1974-01-01
....
1993-01-01
1994-01-01
1995-01-01
1996-01-01
...
2015-01-01
2016-01-01

私は上の1995年および1970年のラインを消したいと思う。

以下は私が作成したsedコマンドです。

sed -i '/197[0-9]/d' test.txt
sed -i '/198[0-9]/d' test.txt
sed -i '/199[0-5]/d' test.txt

これら3つのコマンドを1つのsedコマンドに結合する方法はありますか?

ベストアンサー1

ファイルがソートされているように見えるので、最初から最後まで削除することができます。

例えば

sed -i '1,/^1995/d' test.txt

日付が1970年以前に開始された場合

sed -i '/^1970/,/^1995/d' test.txt

あなたのファイルの場合いいえ持っていないという理由でシンプル正規表現(長くて退屈な正規表現がある)はすべての行に一致しますが、2つ以上を指定できます。

sed -i -e '/^19[78][0-9]/d' -e '/^199[0-5]/d' test.txt

おすすめ記事