ファイルの各行からナノ秒を削除する方法 データのファイル名は次のとおりです。テスト.csv
ip,time,name
1.1.1.1,2018-08-17 15:05:52:016469121,1.13.0-0007
1.1.1.2,2018-08-17 15:05:52:016469121,1.13.0-0007
答え1
努力する
sed 's/:[[:digit:]]*,/,/' file
ip,time,name
1.1.1.1,2018-08-17 15:05:52,1.13.0-0007
1.1.1.2,2018-08-17 15:05:52,1.13.0-0007
最後のコロン、数字の後の最後のコンマをコンマで置き換えます。
答え2
awk -F',' -vOFS=',' '{sub(/:[0-9]{9}$/, "", $2); print}' input.txt
出力:
ip,time,name
1.1.1.1 2018-08-17 15:05:52 1.13.0-0007
1.1.1.2 2018-08-17 15:05:52 1.13.0-0007
説明する
awk -F',' -vOFS=',' '{foo}' input.txt
:awk
ファイルに対して,
コマンドを実行するためにフィールド区切り記号(および出力フィールド区切り文字)と共に使用されます。foo
input.txt
sub(/:[0-9]{9}$/, "", $2);
:2番目のフィールドの場合、$2
正規表現:[0-9]{9}$
(たとえば、フィールドの末尾にある9つの連続した数字)を別のものに置き換えます。print
: 新しい行の印刷