awkでファイルを操作する

awkでファイルを操作する

次の形式のテキストファイルがあります。

Surname, Forename: Day.Month.Year: Degree

Sellen, Jo: 03.07.1986: MSc CSE

Parfitt, Harry: 20.03.1984: MSc IT

class.txt次のようにawkを使用してfile()を読み取るシェルスクリプトをどのように書くことができますか?

awk '{gsub(/ +/,"\t");print}' class.txt

そして、2番目と3番目の列を置き換えて、次の形式でデータを出力します。

Surname Forename MSc stream Date of Birth

Sellen Jo MSc CSE 03.07.1986 

Parfitt Harry MSc IT 20.03.1984

(タブの列が正しく揃っていても心配しないでください。)

答え1

フィールドはコロンで区切られているため、FSawkの変数でこれを考慮する必要があります。また、フィールドの順序を操作するので、セクションでこれを設定する必要がありますOFSBEGIN

答え2

次のコードを試してみてください。

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

ここでは、AWK組み込み変数を使用して複数のフィールド区切り文字(および:)を指定しますFS。には複数のフィールド区切り文字が含まれています[]

関連情報