2015-12-04 35 views
0

我一直在使用AWK減少我使用CSV文件的行數開始。我的文件通常有60,000 300,000線和我使用它們減少到5000行這(與38號根據需要改變):不能使AWK工藝參數正確

awk ’NR % 38 == 0’ input.csv > output.csv 

這工作,通過使用第二個參數爲輸入文件和3參數作爲輸出文件。

我試圖使用第一個參數「$ 1」,以取代38號我不能讓AWK使用參數然而,在這種方式。以下是我想要完成的...

sh reduce.sh 1000 input.csv output.csv 

    #!/bin/bash 
    #script name is reduce.sh 
    awk ’NR % $1 == 0’ $2 > $3 

在此先感謝您的幫助。

回答

4

的第一件事情,你的報價是錯誤的:它們看起來像花哨的「智能」引號。確保它們是簡單的單引號

awk ’NR % $1 == 0’ $2 > $3 
# ..^............^ 

接下來,bash變量不會在單引號內部擴展。一個shell變量傳遞給AWK最好的辦法是與-v選項

awk -v step="$1" 'NR % step == 0' "$2" > "$3" 

末,always quote your variables