2

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 個ある場合、同じ行番号を格納する方法は?

4

3 に答える 3

3

この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]} 
于 2012-06-04T17:29:49.603 に答える
0

このような:

LINES=$(grep -n "gui : 789" file.txt | cut -f1 -d:)

「LINES」変数は「1234」になります。

注:あなたの質問は非常に一般的でした。この回答は、BashまたはKornShellで機能します。

于 2012-06-04T17:28:05.820 に答える
0

各行で処理を実行する場合は、次のように実行できます。

grep -n "gui : 789" file.txt | cut -f1 -d: | while read lineno; do
  : # process using $lineno
done
于 2012-06-04T17:31:43.190 に答える