14個の列を持つ.txtファイルがあります。その頭は次のようになります:awkコードの説明:フィールドの順序の変更
name A1 A2 Freq MAF Quality Rsq n Mean Beta sBeta CHi rsid
SNP1 A T 0.05 1 5 56 7 8 9 11 12 rs1
SNP2 T A 0.05 1 6 55 7 8 9 11 12 rs2
最後の列を最初の位置に配置します。私はこれを行うための最も効率的な方法は何であったかわからなかったが、私は他の記事から自分自身を鼓舞、この出くわした:私は私が考えるこれはこれを、得られ
awk '{$0=$NF FS$0; $14=""}1' file.txt | head
作品:
rsid name A1 A2 Freq MAF Quality Rsq n Mean Beta sBeta CHi
rs1 SNP1 A T 0.05 1 5 56 7 8 9 11 12
rs2 SNP2 T A 0.05 1 6 55 7 8 9 11 12
私はコードが正確に何を理解するのにも苦労しています。
- 私はFSが、どのように私のコードの作業が正確にでき、フィールドの区切り文字
であることを知ってNFが
私はawkを使いこなすのがとても簡単です。これを達成するためのより簡単な方法があれば、私はうれしくそれに行きます。
ありがとうございました
$ 0 = $ NF FS $ 0は、「最後のフィールドを$ 0(行全体)にしてから、$ 0にフィールド区切り文字を使用しますか? 。申し訳ありませんが、それはちょうど非常に本能的ではないようです。私は理解していると思うが、私は – m93
が割り当てとして等号を読むのか分からない。 '$ 0'を最後のフィールド+フィールドセパレータ+古いラインとして設定します。これは、ほとんどの(すべての)プログラミング言語で同じ概念です。 – karakfa
ああ、私ははいを参照してください。私はFS $ 0で混乱していると思う。 $ 0 = $ NF FS $ 0と書くと、私の端末で見ることができます。どうもありがとうございます! – m93