2017-07-25 9 views
1

私は、この表awkは、すべての列を印刷し、SUBSTRで新しい列を追加

USI,Name,2D-3D 
RO0001,Patate,2D 
RO0002,Haricot,3D 
RO0003,Banane,2D 
RO0004,Pomme,2D 
RO0005,Poire,2D 

を持っていると私はAWKで建設 "RO_2D_Patate" を得るために管理し、この

USI,Name,2D-3D 
RO0001,Patate,2D,RO_2D_Patate 
RO0002,Haricot,3D,RO_3D_Haricot 
RO0003,Banane,2D,RO_2D_Banane 
RO0004,Pomme,2D,RO_2D_Pomme 
RO0005,Poire,2D,RO_2D_Poire 

をしたい

awk -F "," '{print substr($1,1,2)"_"substr($3,1,2)"_"$2}' Test4.txt 

しかし、私の前のすべての列$ 0を2番目の表として印刷したいと思います。

私はすべてを試しましたが、私はまだ初心者です!!

これ以上のアイデアはありますか?

+0

/投稿のサンプルINPUT_FILEと期待される出力用コードタグを使用してください。 – RavinderSingh13

答えて

1
awk -F, '{print $0 (NR>1 ? FS substr($1,1,2)"_"$3"_"$2 : "")}' Test4.txt 
+0

ありがとうございます。私は試してみましたが、私は理由を知りませんが、私の結果は異なっています。私はどこでミスをしましたか?私はこの "_PatatePatate、2D"を他のものと同じように取得しています。私は3列前にはありません。 –

+0

入力ファイルにはcontrol-Mが含まれている可能性があります。 awkや他のUNIxツールを実行する前に 'dos2unix'などのファイルを実行してください。 –

0
$ awk -F, -v OFS=, 'NR>1{$4=substr($1,1,2)"_"$3"_"$2}1' Test4.txt 
USI,Name,2D-3D 
RO0001,Patate,2D,RO_2D_Patate 
RO0002,Haricot,3D,RO_3D_Haricot 
RO0003,Banane,2D,RO_2D_Banane 
RO0004,Pomme,2D,RO_2D_Pomme 
RO0005,Poire,2D,RO_2D_Poire 
+0

あなたの答えをありがとう。私は上記と全く同じ問題を抱えています。私は試してみましたが、私は理由を知りませんが、私の結果は異なっています。私はどこでミスをしましたか?私はこの "_PatatePatate、2D"を他のものと同じように取得しています。私は3列前にはありません。 –

+0

あなたの入力ファイルをチェックしてください。エドの答えと私の答えの両方がここでうまくいくからです。 – CWLiu

0
awk -F, 'NR>1{print $0,substr($1,1,2)"_"$NF"_"$2}/USI/' OFS=, file 

USI,Name,2D-3D 
RO0001,Patate,2D,RO_2D_Patate 
RO0002,Haricot,3D,RO_3D_Haricot 
RO0003,Banane,2D,RO_2D_Banane 
RO0004,Pomme,2D,RO_2D_Pomme 
RO0005,Poire,2D,RO_2D_Poire 
+0

これは質問に答えるかもしれませんが、あなたの投稿を編集して、あなたのコマンドが何をしているのか、なぜ初期の問題を解決するのかを簡単に説明してください。 – user1438038

関連する問題