Unix Help - 从文件中提取数字提取器

时间:2014-07-21 10:27:24

标签: linux bash unix

我是UNIX的新手,如果有人可以帮助我,那就太棒了。

我有一个名为IMSI.txt的文本文件,其格式如下:

A imsins -imsi 1241241
A imsins -imsi 5345

等。该文件遵循这种模式。

我需要从这个文件中提取数字并将它们放在另一个文件中。 新文件将具有以下输出:

1241241
5345
...

我有多远,但我无法测试它是否有效

#!/bin/sh
grep [:digit:] IMSI.txt >> IMSINEW.txt
or grep '[0-9]'* IMSI.txt >> IMSINEW.txt

有什么想法吗?

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

有很多方法:

$ awk '{print $NF}' a
1241241
5345
awk中的

NF存储字段数。因此,$NF代表行的最后一个字段,这就是你想要的。

$ grep -o '[0-9]*$' a
1241241
5345

在这种情况下,-o仅打印grep的匹配部分。 [0-9]*$表示一组数字后跟行尾,以便它根据数字与行的最后部分匹配。

或更好(感谢konsolebox):

$ grep -o '[0-9]\+$' a
1241241
5345

您也可以撤消该文件,使用cut获取第一个字段并反转:

$ rev file | cut -d' ' -f1 | rev
1241241
5345

答案 1 :(得分:1)

使用cut命令

$ cut -f 4 -d " " IMSI.txt 
1241241
5345

该命令将文档作为按行组织成行的行。

-f 4 ..只输出第4列(第一列有索引1)

-d " " ..使用" "作为列的分隔符。

这假设您使用空格作为分隔符。如果有标签或其他字符,则必须对其进行修改。

答案 2 :(得分:0)

又一个使用tr

tr -c -d '0-9\n' < file