以下のように3つの列を持つテキストファイルがあります。
6:85406127 T:A 0.44
6:85406139 T:C 0.00
6:85406165 C:G 0.33
3番目の列の拡張子の前にファイル名を追加したいと思います。
私が望む出力は次のとおりです。
CHR:POS REF:ALT Filename
6:85406127 T:A 0.44
6:85406139 T:C 0.0
6:85406165 C:G 0.33
その後、次のコマンドを使用しました。
for i in *.txt; do awk 'BEGIN{print "CHR:POS REF:ALT "${i%.*}"" {print}' $i ; done
しかし、このエラーメッセージが出ました。
awk: cmd. line:1: BEGIN{print "CHR:POS REF:ALT "${i%.*}"" {print}
awk: cmd. line:1: ^ syntax error
答え1
awk
使用しているファイル名を印刷したいがFILENAME
問題がある場合は、プロジェクトが-blockにロードされないため、BEGIN
最初のレコードでこれを行う必要があります。
awk 'NR == 1 { print "Header-Col1","Header-Col2",FILENAME}
NR>=1 { print }' input_file
"\n"
必要に応じて、ヘッダー行()の後に改行文字を追加します。
答え2
解決策:
for i in *.txt ; do awk -v fname="${i%.*}" 'NR == 1 { print "CHR:POS"," ","REF:ALT"," ",fname,"\n" }
NR >=1 { print }' $i > "${i%.*}_header.txt" ; done