次のファイルがあります。
CHROM POS ID A1_FREQ A1 REF DIR P OBS_CT
1 785989 1:785989:T:C 0.152651 T C + 0.152225 1641
1 1130727 1:1130727:A:C 0.0877514 C A - 0.987139 1641
1 1156131 1:1156131:T:C 0.160878 C T - 0.764454 1641
1 1158631 1:1158631:A:G 0.10847 A G + 0.795453 1641
この9つの列名を次の9つの名前に変更したいと思います。
Chr BP Marker MAF A1 A2 Direction pValue N
すべての列はスペースで区切られていることに言及したいと思います。
私はこれを行うことができます:
sed -e '1s/CHROM/Chr/' -e '1s/POS/BP/' ...
しかし、命令が長すぎます...他の方法はありませんか?
答え1
awk 'NR == 1 { $0 = "Chr BP Marker MAF A1 A2 Direction pValue N" }; 1' file >newfile
awk
これはファイルのヘッダーの代わりにまったく新しいヘッダーを出力するために使用されます。他のすべての行は、元のファイルにあるままになります。newfile
結果とともに名前が付けられた新しいファイルが生成されます。
使用sed
:
{
echo 'Chr BP Marker MAF A1 A2 Direction pValue N'
sed 1d file
} >newfile
これにより、新しいヘッダーが出力され、最初のヘッダーを除いて元のファイルから引き続き行が生成されます。以前と同様に、出力はnewfile
。