
次の形式のテキストファイルがあります。
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
フィールドはコロンで区切られているため、FS
awkの変数でこれを考慮する必要があります。また、フィールドの順序を操作するので、セクションでこれを設定する必要がありますOFS
。BEGIN
答え2
次のコードを試してみてください。
awk 'BEGIN { FS="[,:]" } { print $1, $2, $4, $5, $3 }' input_file
ここでは、AWK組み込み変数を使用して複数のフィールド区切り文字(および:)を指定しますFS
。には複数のフィールド区切り文字が含まれています[]
。