以下命令不會從奇數行選擇第2個字符串,從奇數偶數行選擇第4個字符串。 show_statistic.sh | grep -A 1 vlan | awk '{ if ((NR % 2) == 1) { print $2 } else { print $4 } }'
它打印每行的第二個和第四個字符串。我做錯了什麼?用AWK連接每兩條線
回答
它看起來像你的預期結果是從包含「vlan」和以下的行。
您的代碼將有獨特的處置工作,但比一個你的型動物結果將被分離的雙線路只containig多個響應「 - 」作爲記錄在grep的:
-A NUM
Places a line containing a group separator (--) between
contiguous groups of matches. With the -o or --only-matching
option, this has no effect and a warning is given.
所以這條線你就越想在1號線,4,7 ... 和在線2,5,8,第四,第二個參數...
所以,你的代碼可以是:
show_statistic.sh | grep -A 1 vlan | awk '{ if ((NR % 3) == 1) { print $2 } else { if (NR % 3 == 2) { print $4 } } }'
我寫了一個小的文本文件來測試:
1line here
2foo
vlan 2a 3a 4a 5a
1 2 3 4 5
bar
line here
vlan 2a 3a 4a 5a
1 2 3 4 5
line here
baz
結果是:
$ grep -A 1 vlan file| awk '{ if ((NR % 3) == 1) { print $2 } else { if (NR % 3 == 2) { print $4 } } }'
2a
4
2a
4
+1用於計算shell的佈局命令輸出。 –
謝謝Pierre-Louis Laffont。組分隔符( - )是第三行:-)我知道它 – tsoomo
如果在你的shell命令的輸出如下示例文件的通過@皮埃爾 - LouisLaffont那麼這裏創建的佈局你應該使用完整的命令:
$ awk 'f{print $4;f=0} /vlan/{print $2;f=1}' file
2a
4
2a
4
當如果認定VLAN它打印的第2場,並設置一個標誌說VLAN被發現。在下一行它將打印第4個字段並重置標誌。不能簡單得多。
它工作得更快。謝謝@Ed Morton – tsoomo
- 1. 有條件地在awk中連接線
- 2. Сoncatenate與awk條件下的兩條線
- 3. 畫線用兩條平行線連接兩條平行線的末端
- 4. 使用awk連接線和sed
- 5. flex 4:如何連接兩條曲線?
- 6. 博科alishow合併兩條連續線awk sed
- 7. 用樣條線連接點
- 8. 用線條/條連接3D點
- 9. 連接池vs每線程JDBC連接
- 10. Awk:用每條線的花紋計數字段
- 11. 用sed(或AWK),以取代前兩個斜線的每一行
- 12. Snap.svg - 如何總是用一條線連接兩個對象?
- 13. 如何在R中使用傳單連接兩條座標線
- 14. 如何用一條線連接DrawRectangle中的兩個點?
- 15. 我如何用一條線連接兩個節點
- 16. 畫一條線連接WPF中的兩個用戶控件
- 17. 連接2條線圖
- 18. 連接兩個線程
- 19. Awk有兩個條件
- 20. 在Matplotlib中用plot_date連接線條
- 21. 用一條線連接StackPanels和Border
- 22. 使用左連接和兩個條件
- 23. Codeigniter根據兩個連接條件連接兩個表
- 24. SVG用線連接兩個點
- 25. 如何在這個d3.js視覺中用一條線連接兩個弧線
- 26. 在Bash中使用awk重複線條
- 27. 用條件合併兩行AWK
- 28. awk與讀線的比較線條
- 29. SED/AWK合併對線成一條線
- 30. 如何將參數傳遞給AWK中的每條處理線
什麼是奇數偶數行?你能看到一些樣本輸入和預期輸出嗎? –
顯示show_statistics.sh的輸出,並在處理show_statistics.sh輸出結束時告訴我們您要做什麼以及一些預期的輸出。你不需要grep和awk,你正在使用awk,所以我們需要從第1步開始。 –
@ sampson-chen英語不是我的母語。 odd-even可以是2nd,4th,6th .. {n = 1 odd-even = 2 * n,even = 2 * n-1}行作爲我們的字典:-) – tsoomo