0
列5に「p」が含まれている場合は、列4に「end」と「p11」が表示され、列5に「p」が含まれている場合は、 Q」他の列が特定の条件を満たしている場合にawk gensubを使用する
私は毎回交換したい 『最後は、pを『4列が含まれている場合は、 『』、およびに置き換える 『Q『
』を4列が含まれている場合は、』 Q11 P11』でカラム5に表示します』この入力
Bill 89 22 9end q12 2683 2687
Sue 21 20 4end p13 9390 9302
Sam 89 9 p12 p11 9029 9032
Lee 39 20 q12 6end 3892 9032
Smitty 93 7 p13 5end 3902 3902
で、私は
たいBill 89 22 q11 q12 2683 2687
Sue 21 20 p11 p13 9390 9302
Sam 89 9 p12 p11 9029 9032
Lee 39 20 q12 q11 3892 9032
Smitty 93 7 p13 p11 3902 3902
出力として
です。
..
私は基本的にこのようなしかし、正しい構文でコマンドをしたい、それが
awk BEGIN {OFS="\t"} ($5 ~ /q/ {$4=gensub(/[0-9]end/,"q11",1,$4); print}) || ($5 ~ /p/ {$4=gensub(/[0-9]end/,"p11",1,$4); print}) || ($4 ~ /q/ {$5=gensub(/[0-9]end/,"q11",1,$4); print}) || ($4 ~ /q/ {$5=gensub(/[0-9]end/,"q11",1,$4); print})' input
未調整の非一致した行を出力します。
..
私はこの
awk 'BEGIN {OFS="\t"} {$4=gensub(/[0-9]end/,"q11",1,$4); print}' input
を実行し、出力
Steve 89781 22 q11 q12 26839389 26879820
としてこれを取得するしかし、私は結果が欲しいことができ、この入力
Steve 89 22 2end q12 2683 2687
を知っています列にp11を入れる混乱
@エドモートン私の質問を無視することができます。私はgensubの使い方を知らないが、私の他の質問はどれもそれを助けるつもりはないが、その教科書を見ている。 – Jacob
@EdMorton問題は、すべての単一の行を印刷するが、条件に合致する行はそれらに代入されます。私が 'awk' BEGIN {OFS = "\ t"} $ 5〜/ q/{$ 4 = gensub(/ [0-9] end /、 "q11"、1、$ 4)のようなものを実行すると、 print} input 'を実行すると、1行だけが出力されます。私は、行1列ごとに異なる行を出力するものと、列 – Jacob
に基づいているので、ステップ1は、条件が真であるときにのみ実行されるブロックの外に 'print'を移動することです。つまり、'/foo/{bar; print} 'を'/foo/{bar} {print} 'にします。あなたが仕事をやりたいときにチュートリアルや本を読む時間を取るのは難しいことを知っています(私を信じて - 私は最初の仕事を試みる前に5日間のコースでRuby On Railsを学んでいますあなたがそれをやっていないならば、最も簡単なことをやり遂げる方法を疑問に思って、後に大量の間違いを取り除かなければならない、自分の時間を無駄にするだけです。 –