我正在使用awk處理我的文本文件。我寫下面的代碼:while循環只提供了一個使用awk的結果塊
#!/bin/bash
l=1
while [ $l -lt 5 ]
do
echo $l
awk -v L=$l '/^BS[0-5]|^FG[2-7]/ && length<10 {i++}i==L {print}'
l=$(expr $l + 1)
done <input.txt
但是,一旦我運行代碼,我只是得到第一個awk輸出。 您能否告訴我如何修復此代碼?
我正在使用awk處理我的文本文件。我寫下面的代碼:while循環只提供了一個使用awk的結果塊
#!/bin/bash
l=1
while [ $l -lt 5 ]
do
echo $l
awk -v L=$l '/^BS[0-5]|^FG[2-7]/ && length<10 {i++}i==L {print}'
l=$(expr $l + 1)
done <input.txt
但是,一旦我運行代碼,我只是得到第一個awk輸出。 您能否告訴我如何修復此代碼?
while循環正在從文件input.txt
中獲取其輸入。 awk
從while循環繼承它的輸入,並且它讀取循環第一次迭代中的所有輸入。在第二次迭代中,awk沒有獲取數據。如果要在每次迭代中讀取該文件,請將input.txt
作爲參數傳遞給awk
。
更重要的是,跳過while循環,做整個事情在AWK:
awk '/^BS[0-5]|^FG[2-7]/ && length<10 && i++ < 5' input.txt
你不讀我們文件的行。請執行以下操作:
while read line && [ $l -lt 5 ]
do
...
我不想讀線。我正在選擇一段文字。 – user3275043
好吧,基本上你只想循環5次?爲什麼不做'for'循環呢? – RaphaMex