我有一个以下格式的文本文件:
Surname, Forename: Day.Month.Year: Degree
Sellen, Jo: 03.07.1986: MSc CSE
Parfitt, Harry: 20.03.1984: MSc IT
我怎样才能编写一个使用 awk 来读取文件 ( class.txt
) 的 shell 脚本,如下所示:
awk '{gsub(/ +/,"\t");print}' class.txt
并以以下格式输出数据,交换第二列和第三列:
Surname Forename MSc stream Date of Birth
Sellen Jo MSc CSE 03.07.1986
Parfitt Harry MSc IT 20.03.1984
(如果选项卡式列未对齐,请不要担心)
答案1
您的字段似乎用冒号分隔,因此您需要在 awk 的FS
变量中考虑到这一点。您还操纵了字段的顺序,因此您需要OFS
在BEGIN
部分中进行设置。
答案2
你可以尝试这样的代码:
awk 'BEGIN { FS="[,:]" } { print $1, $2, $4, $5, $3 }' input_file
在这里,我们使用 AWK 内置变量 指定多个字段分隔符(, 和 :) FS
。多个字段分隔符包含在[]
.