2017-04-10 3 views
0

過去の数週間から私の質問を精査すると、私はこの質問に似た質問をしました。私は問題がどこから来たのか分からなかったので、要求された形式で質問するのに問題がありました。 E.Mortonは範囲表現を使用しないように指示します。まあ、私は彼らが何をすごく知っているのか分かりません。このフォーラムでは、多くの質問が私の仕事と同じように答えました。複数の入力ファイルを一致させて処理します。

のように:「どのように試合から次の行を印刷する」(e.g.

しかし、私は私は1つの入力ファイルよりも多くを処理する際に動作を停止したすべてのソリューションを提供しています。私は多くを処理する必要があります。 1.awkが含まれていながら

gawk -f 1.awk print*.csv > new.txt 

BEGIN { OFS=FS=";" 
pattern="row4" 
} 
go {print} $0 ~ pattern {go = 1} 

入力ファイル1 print1.csvが含まれています

row1;something;in;this;row;;;;;;; 
row2;something;in;this;row;;;;;;; 
row3;something;in;this;row;;;;;;; 
row4;don't;need;to;match;the;whole;line,; 
row5;something;in;this;row;;;;;;; 
row6;something;in;this;row;;;;;;; 
row7;something;in;this;row;;;;;;; 
row8;something;in;this;row;;;;;;; 
row9;something;in;this;row;;;;;;; 
row10;something;in;this;row;;;;;;; 

入力ファイル2 print2.csvが同じ含まれてい 私は、このコマンドを使用します。単に説明の目的のためです。

1.awk(とこのフォーラムで見つけたいくつかのやり方は、1つのファイルに対して動作します)。出力:

row5;something;in;this;row;;;;;;; 
row6;something;in;this;row;;;;;;; 
row7;something;in;this;row;;;;;;; 
row8;something;in;this;row;;;;;;; 
row9;something;in;this;row;;;;;;; 
row10;something;in;this;row;;;;;;; 

しかし、入力ファイルをさらに処理するときはありません。 このように処理するたびに、複数の入力ファイルawkコマンド 'to match from print'は無視されるようです。 私は範囲式を使わないように言われました。私はどのようにして問題が多種のファイルを入力する方法にリンクしているのか分かりません。 「もし$ 1:

答えて

2

はちょうど

がであなたのawkを組み合わせることも可能であるコメントからは、各ファイル

$ awk 'FNR==1{p=0} p; /row4/{p=1} ' file1 file2 

row5;something;in;this;row;;;;;;; 
row6;something;in;this;row;;;;;;; 
row7;something;in;this;row;;;;;;; 
row8;something;in;this;row;;;;;;; 
row9;something;in;this;row;;;;;;; 
row10;something;in;this;row;;;;;;; 
row5;something;in;this;row;;;;;;; 
row6;something;in;this;row;;;;;;; 
row7;something;in;this;row;;;;;;; 
row8;something;in;this;row;;;;;;; 
row9;something;in;this;row;;;;;;; 
row10;something;in;this;row;;;;;;; 

UPDATE

の初めに、あなたのマッチインジケータをリセット= "row5"と入力して $ 6 = "row5"に書き込み、$ 5の値 "row5"を削除しますか?換言すると、 コンテンツを移動するには "ro列1の「w5」が見つかった場合は、新しい列6に移動しますか?私は別のawkでこれを する可能性が、1つに組み合わせは次のようになり、よりよい

... $1=="row5"{$6=$5; $5=""} ... 

か、あなたが対応するフィールド番号で$5を置き換える代わりに$5の別のフィールドを使用する場合。

+0

OPごとに多くのファイルが存在する可能性があります。あまりにも多くのファイルが開かれているなどのエラーが発生する可能性があります。 – RavinderSingh13

+1

あなたの推測は正しくありません。入力ファイルは一度に1つずつ処理され、正しく閉じられます。 – karakfa

+0

karakfaありがとうございます。最終的にそれは機能し、私は私の目標に一歩近づいています。あなたのawkを組み合わせることは可能ですか? "$ 1 =" row5 "なら$ 6 =" row5 "と書いて$ 5の値" row5 "を削除しますか?言い換えれば、コンテンツ" row5 "を移動するには、 1列目に見つかったら新しい列6に?別のawkでこれを行うことができますが、1つに組み合わせるとより良いでしょう。 – prestalearner

関連する問題