Bash 如何在数字和冒号之间找到一个数字?

Bash 如何在数字和冒号之间找到一个数字?,bash,awk,sed,grep,Bash,Awk,Sed,Grep,我想把两个冒号之间的数字和其他数字放在一个文件里 例如: 1234:12345678:1234 1234:12345678:1234 1234:12345678:1234 我希望输出显示所有的12345678,而不显示其他内容 像这样: 12345678 12345678 12345678 我通过以下方式实现了这一点: egrep -o "[0-9]{8}" file 问题是我需要一个不同于egrep-o的解决方案(awk或sed?) 我搜索并尝试了几件事,但都没有成功 任何帮助都将不胜感

我想把两个冒号之间的数字和其他数字放在一个文件里

例如:

1234:12345678:1234
1234:12345678:1234
1234:12345678:1234
我希望输出显示所有的12345678,而不显示其他内容

像这样:

12345678
12345678
12345678
我通过以下方式实现了这一点:

egrep -o "[0-9]{8}" file
问题是我需要一个不同于egrep-o的解决方案(awk或sed?)

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

任何帮助都将不胜感激

如果“数字”总是第二列,您可以使用awk:

awk -F: '{print $2}' file
如果“数字”总是第二列,您可以使用awk:

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

对于
awk
解决方案

awk -F: '{print $2}' file
或者只需使用
cut
即可

cut -d: -f2 file

对于
awk
解决方案

awk -F: '{print $2}' file
或者只需使用
cut
即可

cut -d: -f2 file
这样行吗

awk -F':' '{print $2}' test > test results.txt
这样行吗

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


谢谢这两种解决方案都有效。假设我还想要这个示例中的8个数字:1234:1234:12345678如果我还想要显示,那么该命令将不起作用。那么你知道我怎样才能让它也显示出来吗?awk-F:{print$3}文件是的,如果我想看到第三列的数字,这是有效的。但是我不清楚我的意思。假设我想看到所有8个编号的列。所以1234:1234:12345678也是1234:12345678:1234。谢谢你!我没有试过这个,但我想你可以使用,
awk-F:'{for(I=1;我似乎什么都没做。就像我也试过但它就是不起作用一样,[0-9]{8}看起来很有希望。谢谢!两种解决方案都有效。假设我还想要这个示例中的8个数字:1234:1234:12345678,如果我也想显示,那么该命令将不起作用。那么你知道如何让它也显示出来吗?awk-F:'{print$3}'文件是的,如果我想看到第三列的数字,这是有效的。但是我不清楚我的意思。假设我想看到所有8列的数字。所以1234:1234:12345678,还有1234:12345678:1234。谢谢你!虽然没有试过这个,但我想你可以使用,
awk-F:'{(i=1;我似乎什么也没做。就像我也尝试过但它就是不起作用一样,[0-9]{8}看起来确实很有希望。使用
sed/:\(.*\):/\1/'文件
-如果有超过3列,并且您不确定该值是否始终是第2列,则在反限制器之间打印
,在这里使用
Awk
可能很棘手。如果有超过3列的反限制器存在,则此操作将有效also@Inian这样做的目的是删除冒号和sh查看所有数字。我只想查看8个数字。使用
sed的/:\(.*\):/\1/'文件
-如果有超过3列,并且您不确定该值是否始终是第2列,则在反限制器之间打印
,在这里使用
Awk
可能很棘手。如果有超过3列的反限制器存在,则此操作将有效also@Inian这样做的目的是删除冒号和show所有的数字。我只想看到8个数字。我假设你正在尝试创建一个包含结果的文件。这对我不起作用,似乎不是我想要实现的:).Ty!我假设你正在尝试创建一个包含结果的文件。这对我不起作用,似乎也不是我想要实现的:).Ty!非常好用,谢谢!如果它不总是第二列,但第三列也有一列呢?所以我想看看第1行、第2行和第3行的8个数字。第一行=12345678:1234:1234,第二行=1234:12345678:1234和第三行=1234:1234:12345678。没必要,但我也想知道!)如果您感兴趣的列是第3列,只需将$2更改为$3。如果列2的长度必须为8,则您可以执行:
awk-F:“$2&&length($2)==8{print$2}”文件
。这很有趣,谢谢。知道如何显示所有8个数字长的字符串吗?无论它在哪个列中。您可以使用循环:
awk-F:{(i=1;我工作得很好,谢谢!如果它不总是第二列,但第三列也有一列呢?所以我想看看第1、2和3行的8个数字。第一行=12345678:1234:1234,第二行=1234:12345678:1234和第三行=1234:1234:12345678。没必要,但我也想知道!)如果您感兴趣的列是第3列,只需将$2更改为$3。如果列2的长度必须为8,则您可以执行:
awk-F:'$2&&length($2)==8{print$2}'文件
。这很有趣,谢谢。您知道如何显示所有8个数字长的字符串吗?无论它在哪个列中。您可以使用循环:
awk-F:'{for(i=1;i)