我有一个文件包含一些行。现在我想读取行并获取行号。如下:
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
那么,我应该做些什么才能得到这个呢?
感谢。
任何人都可以帮我吗???
答案 0 :(得分:0)
我刚问过我的一位朋友,找到了一个简单的方法:
cat -n $file |while read line
do
number=echo $line | cut -d " " -f 1
echo $number
done
这意味着如果我们无法从文件本身获取行号,我们会使用行号传递它。
答案 1 :(得分:0)
UNIX shell只是一个可以调用工具和语言来对这些调用进行排序的环境。 UNIX通用文本处理工具是awk所以只需使用它:
$ awk '{sub(/.*S/,NR" S")}1' file
1 S7941
2 S7927
3 S5001
如果您要进行任何文本操作,请阅读Arnold Robbins撰写的Effective Awk Programming,第4版。