我在stackoverflow上找到了有關從match(row4)(link)打印的awk,並結合了處理多個文件的功能,這是因爲每次打開新文件時都會重置匹配指示符。 輸入文件1,文件2和文件3看這每一次這樣的:循環中的Awk語法
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;;;;;;;
輸出應該是這樣的:
works something in this row
row6 something in this row
row8 something in this row
row9 something in this row
row10 something in this row
works something in this row
row6 something in this row
row8 something in this row
row9 something in this row
row10 something in this row
works something in this row
row6 something in this row
row8 something in this row
row9 something in this row
row10 something in this row
在原來的線程在這裏link它說一個可以簡單地添加
... $1=="row5"{$6=$5; $5=""} ...
爲了在命令的匹配條件成立時'移動'字段:
awk 'FNR==1{p=0} p; /row4/{p=1} ' file1 file2
但是我必須在哪裏添加這個?我嘗試了所有我看到的組合,但沒有奏效。在我來說,我也希望以後的比賽「7行」和和變化場$ 1刪除行,如果它是==「5行」
if ($1=="row7") {next};
if ($1=="row5") {$1="works"}
在我來說,我把規則到一個文件:測試。 awk並保存以備後用。我以這種方式呼叫:
gawk -f test.awk *.csv
(file1.csv,file2.csv和file3.csv)。這兩個新的條件下仍然被也被忽略,如果我在P規則之前把這些:
FNR==1 {p=0}
$1=="row5" {$5="works"}
$1=="row7" {next}
p;
/row4/{p=1}
我很困惑你想做什麼 - 你的輸入文件和相應的輸出樣本會讓事情更加清晰。 –
Fenech先生,有一個原始的命令在爲我工作。這是模範。我想添加兩個if條件,例如:IF($ 1 ==「row5」){$ 6 = $ 5; $ 5 = 「」}; IF($ 1 ==「row7」){next};和其他命令。但我不知道如何添加它們。在我的情況下,如果我把它們放在原始awk之前,之後或中間,它就不起作用。 – vandyke
我的_guess_是條件應該在評估條件'p'之前進行,但是沒有樣本輸入和我無法確定的期望輸出。如果您向我們提供可複製的測試用例,那麼我確信有人可以解決您的問題。 –