如何在 while 循环中将行号分配给变量
How to assign line number to a variable in a while loop
我有一个包含一些行的文件。现在我想阅读这些行并获取行号。如下:
while read line
do
string=$line
number=`awk '{print NR}'` # This way is not right, gets all the line numbers.
done
这是我的场景:我有一个文件,包含一些行,如下所示:
2015Y7M3D0H0Mi44S7941
2015Y7M3D22H24Mi3S7927
2015Y7M3D21H28Mi21S5001
我想读取这个文件的每一行,打印出以"S"开头的最后一个字符及其行号。它应该看起来像:
1 S7941
2 S7927
3 S5001
那么,我应该怎么做才能得到这个呢?
谢谢。
谁能帮帮我???
刚问了一个朋友,找到了一个简单的方法:
cat -n $file |while read line
do
number=echo $line | cut -d " " -f 1
echo $number
done
这意味着如果我们无法从文件本身获取行号,我们将传递一个行号。
UNIX shell 只是一个调用工具的环境和一种对这些调用进行排序的语言。 UNIX 通用文本处理工具是 awk,所以就用它吧:
$ awk '{sub(/.*S/,NR" S")}1' file
1 S7941
2 S7927
3 S5001
如果您要进行任何文本操作,请阅读 Arnold Robbins 撰写的 Effective Awk Programming,第 4 版。
我有一个包含一些行的文件。现在我想阅读这些行并获取行号。如下:
while read line
do
string=$line
number=`awk '{print NR}'` # This way is not right, gets all the line numbers.
done
这是我的场景:我有一个文件,包含一些行,如下所示:
2015Y7M3D0H0Mi44S7941
2015Y7M3D22H24Mi3S7927
2015Y7M3D21H28Mi21S5001
我想读取这个文件的每一行,打印出以"S"开头的最后一个字符及其行号。它应该看起来像:
1 S7941
2 S7927
3 S5001
那么,我应该怎么做才能得到这个呢?
谢谢。
谁能帮帮我???
刚问了一个朋友,找到了一个简单的方法:
cat -n $file |while read line
do
number=echo $line | cut -d " " -f 1
echo $number
done
这意味着如果我们无法从文件本身获取行号,我们将传递一个行号。
UNIX shell 只是一个调用工具的环境和一种对这些调用进行排序的语言。 UNIX 通用文本处理工具是 awk,所以就用它吧:
$ awk '{sub(/.*S/,NR" S")}1' file
1 S7941
2 S7927
3 S5001
如果您要进行任何文本操作,请阅读 Arnold Robbins 撰写的 Effective Awk Programming,第 4 版。