2017-10-16 39 views
1

我试图获取两个冒号和文件中其他数字之间的数字。如何查找数字和冒号之间的数字?

例子:

1234:12345678:1234 
1234:12345678:1234 
1234:12345678:1234 

我想要的输出显示所有的12345678的,别无其他的。

像这样:

12345678 
12345678 
12345678 

我实现这一点使用:(?AWK或SED)

egrep -o "[0-9]{8}" file 

问题是,我需要比egrep的-o不同的解决方案

我搜索并尝试了几件事情,但没有成功。

任何帮助,将不胜感激!

+0

使用'sed的 'S /:\:/ \ 1 /(* \)' file' - 到解限'之间的打印:','使用如果有Awk'可能有猫腻这里超过3列,如果您不确定该值是否始终是第二列。这将工作,如果有超过3列与不同的取消限制器也存在 – Inian

+0

@Inian这是做什么是删除冒号和显示所有数字。我只想看到8个数字。 – xSulky

回答

0

如果 “数” 始终是第2列,你可以使用awk做:

awk -F: '{print $2}' file 
+0

完美地工作,谢谢!如果它不总是第二列,但第三列中还有一列?所以我想看看第1,2和3行的8个数字。第一行= 12345678:1234:1234,第二行= 1234:12345678:1234,第三行= 1234:1234:12345678。没有必要,但我也想知道这一点! :) – xSulky

+0

如果您感兴趣的列是第3位,只需将$ 2更改为$ 3即可。如果第2列的长度必须是8,那么你可以这样做:'awk -F:'$ 2 && length($ 2)== 8 {print $ 2}'file'。 – usr

+0

这是有趣的事,谢谢。任何想法如何显示所有8个数字的长字符串?不管它在哪一列。 – xSulky

0

对于awk解决方案,

awk -F: '{print $2}' file 

或者干脆用cut要做到这一点,

cut -d: -f2 file 
+0

谢谢!这两个解决方案都有效。假设我也想要这个例子的8个数字:1234:1234:12345678如果我也希望这个命令显示,那么这个命令将不起作用。所以你有什么想法我怎么能让它表现出来? – xSulky

+0

awk -F:'{print $ 3}'文件 – CWLiu

+0

是的,如果我想查看第三列数字,这是有效的。我不清楚我的意思。假设我想查看所有8个编号的列。所以1234:1234:12345678,但也是1234:12345678:1234。谢谢你! – xSulky

0

这项工作?

awk -F':' '{print $2}' test > test results.txt 
+0

我假设你正在尝试使用其中的结果生成一个文件。这不适用于我,似乎并不是我想要实现的:)。泰! – xSulky

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/17639504) – purplepsycho

相关问题