我是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
有什么想法吗?
感谢您的帮助
答案 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