file.txt的是如下:如何在变量(shell脚本,unix)中存储行号?
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,如何存储相同的行号?
file.txt的是如下:如何在变量(shell脚本,unix)中存储行号?
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,如何存储相同的行号?
您可以使用此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]}
@ anubhava:它打印输出如下面是相同的,因为我在后 这些行号要被存储在单独的变量作为 一个= 1 B = 2 c项= 3 d = 4 –
它应该是通用的。 –
@JackieJames:请告诉你这里“通用”是什么意思,我可以肯定地编辑我的答案以反映这一点。 – anubhava
像这样:
LINES=$(grep -n "gui : 789" file.txt | cut -f1 -d:)
的 “LINES” 变量将具有 “1 2 3 4”。
注意:你的问题是非常通用的。这个答案适用于Bash或Korn Shell。
如果你想要做处理每行,你可以这样做:
grep -n "gui : 789" file.txt | cut -f1 -d: | while read lineno; do
: # process using $lineno
done
将输出重定向到一个文件。 –
你问如何计算'N'? –
我必须将o/p(每行代码)存储在一个变量中,这在下一步中更加有用。我可以做吗? –