Kev*_*vin 5 regex unix linux grep file
我确定这个问题的答案已经在线,但我不知道我在找什么.我刚刚开始学习Unix/Linux课程,我爸爸让我为他的工作做点什么.他有一个文本文件,每隔四行就有一个10位数字.我如何列出数字列表?我假设文件看起来像这样:
Random junk
Random junk fake number 1234567809
Random junk
My phone number is 1234567890 and it is here random numbers 32131;1231
Random junk
Random junk another fake number 2345432345
Random junk
Just kidding my phone number is here 1234567890 the date is mon:1231:31231
Run Code Online (Sandbox Code Playgroud)
我假设它像grep [1-9].\{9\}
文件,但我怎么得到线4,8,12等因为我测试它,我得到每一行的所有电话号码.另外我怎么得到的数字不是整行?
任何帮助将不胜感激,即使它指向我正确的方向,所以我可以自己研究它.谢谢.
您可以分两步完成:
$ awk '!(NR%4)' file | grep -Eo '[0-9]{10}'
1234567890
1234567890
Run Code Online (Sandbox Code Playgroud)
awk '!(NR%4)' file
打印那些数字为4的倍数的行.这与说法相同awk '(NR%4==0) {print}' file
.grep -Eo '[0-9]{10}'
打印出现在10块上的数字.注意这-o
是"只打印匹配"并-E
使用扩展正则表达式.或者也
$ awk '!(NR%4)' file | grep -Eo '[1-9][0-9]{9}' #check if first number is <>0
Run Code Online (Sandbox Code Playgroud)