2

file.txt 如下:

gui : 789
gui : 789
gui : 789
gui : 789
abc : 120

followibng 给出 o/p 为

$ grep -n "gui : 789" file.txt | cut -f1 -d: 
1
2
3
4

如果有N个这样的gui:789,如何存储相同的行号?

4

3 回答 3

3

您可以使用这个 awk 1 衬里:

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”变量将具有:“1 2 3 4”。

注意:您的问题非常笼统。这个答案适用于 Bash 或 Korn Shell。

于 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 回答