file.txt は次のとおりです。
gui : 789
gui : 789
gui : 789
gui : 789
abc : 120
次の式は、o/p を次のように与えます。
$ grep -n "gui : 789" file.txt | cut -f1 -d:
1
2
3
4
そのような gui:789 が N 個ある場合、同じ行番号を格納する方法は?
file.txt は次のとおりです。
gui : 789
gui : 789
gui : 789
gui : 789
abc : 120
次の式は、o/p を次のように与えます。
$ grep -n "gui : 789" file.txt | cut -f1 -d:
1
2
3
4
そのような gui:789 が N 個ある場合、同じ行番号を格納する方法は?
このawk1ライナーを使用できます。
awk '/gui : 789/{print NR}' file
これをループ内で処理するには:
while read l
do
echo $l
done < <(awk '/gui : 789/{print NR}' file)
編集:これらのコマンドは、ファイル内の任意の数の一致に対して機能します。上記の行番号の出力を配列に格納するには、次のようにします。
arr=( $(awk '/gui : 789/{print NR}' x) )
後でこれらの配列要素を次のように処理します。
echo ${arr[0]}
echo ${arr[1]}
...
echo ${arr[5]}
このような:
LINES=$(grep -n "gui : 789" file.txt | cut -f1 -d:)
「LINES」変数は「1234」になります。
注:あなたの質問は非常に一般的でした。この回答は、BashまたはKornShellで機能します。
各行で処理を実行する場合は、次のように実行できます。
grep -n "gui : 789" file.txt | cut -f1 -d: | while read lineno; do
: # process using $lineno
done