2行目を置き換える[閉じる]

2行目を置き換える[閉じる]

yyyy-mm-dd hh:mm:ss下のファイルから最初の項目を除くすべての項目を削除したいと思います。だから基本的に私は行の最初の出現をマークし、残りのすべての重複行を削除したいと思います。正規表現cmdを使用してこれを行うのに役立つ人はいますか?

Will use per-minute statistics
Stats from 2016-06-26   00:00:00 to 2016-06-26  23:59:00
yyyy-mm-dd      hh:mm:ss
6/26/2016       0:01:00
6/26/2016       0:03:00
yyyy-mm-dd      hh:mm:ss
6/26/2016       0:01:00
yyyy-mm-dd      hh:mm:ss
6/26/2016       0:01:00
6/26/2016       0:02:00
6/26/2016       0:03:00

ベストアンサー1

重複したyyyy-mm-dd行をすべて削除するには

% sed '/^yyyy-mm-dd/,$ { n ; /^yyyy-mm-dd/d }' srcfile
Will use per-minute statistics
Stats from 2016-06-26   00:00:00 to 2016-06-26  23:59:00
yyyy-mm-dd      hh:mm:ss
6/26/2016       0:01:00
6/26/2016       0:03:00
6/26/2016       0:01:00
6/26/2016       0:01:00
6/26/2016       0:02:00
6/26/2016       0:03:00

すべての重複行を削除したい場合は、これは少しハッキング的で非効率的ですが、動作し理解しやすいです。 (2番目のsed | grepを最適化できますが、読みやすくなります。IMHO)。

% sed -n '1,/^yyyy-mm-dd/p' srcfile ; sed '1,/^yyyy-mm-dd/d' srcfile | grep -v ^yyyy-mm-dd | sort -u
Will use per-minute statistics
Stats from 2016-06-26   00:00:00 to 2016-06-26  23:59:00
yyyy-mm-dd      hh:mm:ss
6/26/2016       0:01:00
6/26/2016       0:02:00
6/26/2016       0:03:00

おすすめ記事