2014-06-13 48 views
-1

我想从文件中获取行号。在出现5个破折号(-----)的文件中,我想获取该行号。 例如如何获取行号?

Day to Day 
------------------ 
Month 
----- 
Jan 
feb 
mar 


Year 
----- 
2014 
2013 
2012 

所以这里的年份和月份有5个dashes.i想要得到那个月和年线号。 谢谢。

+0

可能的重复[使用Bash脚本查找文件中的字符串行号](http://stackoverflow.com/questions/20026370/using-bash-script-to-find-line-number-of-string- in-file) – CSchulz

+1

-1因为没有尝试解决自己的问题。 – DBedrenko

回答

1

您可以使用-n选项与grep来制作grep输出行号。因此,这将是这样的:

grep -n ^-----$ filename.txt 
2

您可以使用AWK:

awk '/-{5}/{print NR, $0}' file 
2 ------------------ 
4 ----- 
11 ----- 

要获得唯一的行号使用方法:

awk '/-{5}/{print NR}' file 
2 
4 
11 

编辑:如果你想找到确切的5个破折号线则使用:

awk '/^-{5}$/{print NR}' file 
4 
11 
+0

我删除了我的,因为它与你的相似。如果要求是5破折号,那么为什么你的命令获得行号2? –

+0

它发现至少有5个破折号不完全是5破折号,但我添加了一个awk版本,找到确切的5破折号的行。 – anubhava

2

如果你只是想后面的行号,而不是文字,你可以在补用cutgrep

grep -n '^-----$' file.txt | cut -f1 -d: 

输出:

4 
11 
1

一个sed的较少使用的命令:

sed -n '/^-----$/=' file