2つのデータ列を持つファイルがあります。
kevin n1
edwin n2
mevin n3
私はこのような宣言を生成したいと思います。
--This is kevin and his 'roll number' is n1
--This is edwin and his 'roll number' is n2
--This is mewin and his 'roll number' is n3
これでこの操作を実行することはできませんawk
。ステートメントの途中でダッシュ "--" や一重引用符 (') を使用しません。
上記のような出力が欲しいですか?
答え1
awkを使用してください:
awk 'NF{print "--This is " $1 " and his \047roll number\047 is " $2 }' file
\047
一重引用符の 8 進コードです'
。
別のオプションは、一重引用符文字を含む変数を定義することです。
awk -v sq="'" 'NF{print "--This is " $1 " and his "sq"roll number"sq" is " $2 }' file
答え2
シンプルwhile
ループ:
while read -r name roll; do if [[ -z "$name" ]]; then echo ; else echo "--This is $name and his 'roll number' is $roll"; fi; done < infile
--This is kevin and his 'roll number' is n1
--This is edwin and his 'roll number' is n2
--This is mevin and his 'roll number' is n3
このソリューションは、OPが望むように見えるので、空白行を維持します。
infile
次のように:
cat infile
kevin n1
edwin n2
mevin n3
これにはエラー処理などはなく、もちろんOPで指定したファイル形式によって異なります。
答え3
パール1行:
perl -ane '@F && printf "--This is %s and his '\''roll number'\'' is %s\n", @F' file