使用 awk 操作文件

使用 awk 操作文件

我有一个以下格式的文本文件:

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变量中考虑到这一点。您还操纵了字段的顺序,因此您需要OFSBEGIN部分中进行设置。

答案2

你可以尝试这样的代码:

awk 'BEGIN { FS="[,:]" } { print $1, $2, $4, $5, $3 }' input_file

在这里,我们使用 AWK 内置变量 指定多个字段分隔符(, 和 :) FS。多个字段分隔符包含在[].

相关内容