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,如何存储相同的行号?
答案 0 :(得分: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]}
答案 1 :(得分:0)
像这样:
LINES=$(grep -n "gui : 789" file.txt | cut -f1 -d:)
“LINES”变量将具有:“1 2 3 4”。
注意:您的问题非常通用。这个答案适用于Bash或Korn Shell。
答案 2 :(得分:0)
如果您想对每一行进行处理,您可以执行以下操作:
grep -n "gui : 789" file.txt | cut -f1 -d: | while read lineno; do
: # process using $lineno
done