csvファイルがあります
ip,time,name
1.1.1.1,2018-08-31 10:01:03,postgres
2.1.1.1,2018-08-31 12:51:13,oracle
3.1.1.1,2018-08-31 14:32:53,sql
次の出力が必要です
ip,time,name
1.1.1.1,2018-08-31 10:01:03.1,postgres
2.1.1.1,2018-08-31 12:51:13.1,oracle
3.1.1.1,2018-08-31 14:32:53.1,sql
答え1
これを使用してください:
awk -F, 'BEGIN{OFS=","} NR>1{$2=$2".1"}1' file
-F,
入力フィールド区切り記号の設定BEGIN{OFS=","}
出力フィールド区切り記号の設定NR>1{$2=$2".1"}
.1
行番号が0より大きい場合は、2番目のフィールドにaを追加します。
答え2
使用sed
:
$ sed '2,$s/,/.1,/2' file
ip,time,name
1.1.1.1,2018-08-31 10:01:03.1,postgres
2.1.1.1,2018-08-31 12:51:13.1,oracle
3.1.1.1,2018-08-31 14:32:53.1,sql
これにより、2行目以降(2,$
)に置換が適用されます。この置換s/,/.1,/2
は2番目のカンマを.1,
。/2
2番目の一致に移動するには、コマンドの最後にを置き換えます。