awk、分割後に印刷を使用しようとしてエラーが発生します。
入力する:
id day userId itemId
1 12/1/17 8:32 2232 tv
2 1/12/18 10:18 3232 fdfs
3 2/9/18 10:50 232 fdsf
4 3/6/18 12:35 345456 fdg
期待される出力
id datetime monthyear time userId itemId
1 12/1/17 8:32 12/17 8:32 2232 tv
2 1/12/18 10:18 1/18 10:18 3232 fdfs
3 2/9/18 10:50 2/18 10:50 232 fdsf
4 3/6/18 12:35 3/18 12:35 345456 fdg
答え1
どうですか?
awk -F"\t" '
NR == 1 {$2 = "datetime" OFS "monthyear" OFS "time"
}
NR > 1 {split ($2, T, "[/ ]")
$2 = $2 OFS T[1] "/" T[3] OFS T[4]
}
1
' OFS="\t" file
id datetime monthyear time userId itemId
1 12/1/17 8:32 12/17 8:32 2232 tv
2 1/12/18 10:18 1/18 10:18 3232 fdfs
3 2/9/18 10:50 2/18 10:50 232 fdsf
4 3/6/18 12:35 3/18 12:35 345456 fdg
答え2
RudiCはファイル変換方法を示しています。同じファイルに再度保存するには:
GNU awkを使う:
gawk -i inplace '...' file
使用
sponge
moreutils
パッケージから:awk '...' file | sponge file
または一時ファイルを使用してください
tmp=$(mktemp) awk '...' file > "$tmp" && mv "$tmp" file