私はこれを持っています:
2018:01:02-23:52:48
2018:01:02-23:52:48
2018:01:02-23:52:48
2018:01:03-09:26:20
2018:01:03-09:26:20
1日にメッセージ数に基づいて並べ替えるために、日付は維持し、時間は維持したいと思います。
2018:01:02
2018:01:02
2018:01:02
2018:01:03
2018:01:03
可能であれば、このようにしたいと思いますawk
。
答え1
アッ
awk -F- '$0=$1' file
切る
cut -d- -f1 file
sed
sed 's/-.*//' file
真珠
perl -pe 's/-.*//' file
答え2
簡単にawk
:
awk -F'-' '{ print $1 }' file
-F'-'
--
(ダッシュ)をフィールド区切り文字として扱います。
しかし、単純な場合、grep
アプローチはより簡単です。
grep -o '^[^-]*' file
答え3
入力したらただタイムスタンプを含めると、ダッシュをフィールド区切り文字に設定し、最初のフィールドのみを印刷するのが簡単です。
$ awk -F- '{print $1}' input
2018:01:02
2018:01:02
input2
しかし、その中に他の内容が含まれている場合
2018:01:02-23:52:48 some data
2018:01:02-23:52:48 something else
これにより、行の残りの部分が削除され、他の処理のためにフィールド区切り文字も変更したくありません。ただし、最初のフィールドを簡単に置き換えて結果行を印刷することはできます。
$ awk '{sub(/-.*/, "", $1)} 1' input2
2018:01:02 some data
2018:01:02 something else
答え4
以下のawkサブストリングメソッドで同じ効果を得ました。
awk '{print substr($1,1,10)}' filename
出力
2018:01:02
2018:01:02
2018:01:02
2018:01:03
2018:01:03