簡體   English   中英

Bash腳本awk條件

[英]Bash Script Awk Condition

我對此代碼有問題..我不知道我要寫什么作為用awk剪切文件的條件。

i=0    
while [ $i -lt 10 ]; #da 1 a 9, Ap1..Ap9
    do

      case $i in
        1) RX="54:75:D0:3F:1E:F0";;
        2) RX="54:75:D0:3F:4D:00";;
        3) RX="54:75:D0:3F:51:50";;
        4) RX="54:75:D0:3F:53:60";;
        5) RX="54:75:D0:3F:56:10";;
        6) RX="54:75:D0:3F:56:E0";;
        7) RX="54:75:D0:3F:5A:B0";;
        8) RX="54:75:D0:3F:5F:90";;
        9) RX="D0:D0:FD:68:BC:70";;
        *) echo "Numero invalido!";;
      esac
      echo "RX = $RX" #check 
      awk -F, '$2 =="$RX" { print $0 }' File1 > File2[$i] #this is the line!
  i=$(( $i + 1 ))
  done

命令回顯可以正確打印,但是當我在AWK中使用相同的“ $ RX”作為條件時,它將不起作用(它將打印空白頁)。 我的文件1:

1417164082794,54:75:D0:3F:53:60,54:75:D0:3F:1E:F0,-75,2400,6 1417164082794,54:75:D0:3F:56:10,54:75: D0:3F:1E:F0,-93,2400,4 1417164082794,54:75:D0:3F:56:E0,54:75:D0:3F:1E:F0,-89,2400,4 1417164082794,54: 75:D0:3F:5A:B0,54:75:D0:3F:1E:F0,-80,2400,4 1417164082794,54:75:D0:3F:53:60,54:75:D0:3F: 1E:F0,-89,5000,2

你能告訴我正確的表達方式“ awk -F ...”

非常感謝你!

要將變量從shell傳遞到awk,請使用-v:

awk -F, -v R="$RX" '$2 ==R { print $0 }' File1 > File2[$i]

@Ricky-每當您在shell中編寫一個循環來僅僅操縱文本時,您都會使用錯誤的方法。 這不是創建shell要做的,而是創建awk要做的,創建shell來調用諸如awk之類的命令。

只需使用單個awk命令,而不是讀取File 10次​​並為文件的每一行打開變量,只需全部執行一次,就像這樣:

BEGIN {
    split(file2s,f2s)
    split("54:75:D0:3F:1E:F0\
           54:75:D0:3F:4D:00\
           54:75:D0:3F:51:50\
           54:75:D0:3F:53:60\
           54:75:D0:3F:56:10\
           54:75:D0:3F:56:E0\
           54:75:D0:3F:5A:B0\
           54:75:D0:3F:5F:90\
           D0:D0:FD:68:BC:70", rxs)
    for (i in rxs) {
        rx2file2s[rxs[i]] = f2s[i]
    }
}
{
    if ($2 in rx2file2s) {
        print > rx2file2s[$2]
    }
    else {
        print NR, $2, "Numero invalido!" | "cat>&2"
    }
}

然后將其作為awk -v file2s="${File2[@]}" -f script.awk File1調用awk -v file2s="${File2[@]}" -f script.awk File1

我之所以說“類似”,是因為您沒有提供任何示例輸入(File1內容)或預期輸出(File2 *值和內容),所以我無法對其進行測試,但如果不完全正確,它將非常接近您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM