删除shellscript中每行的字符

删除shellscript中每行的字符,shell,unix,Shell,Unix,我有一个如下的文本文件 IMPALA COUNT :941 MONGO COUNT : 980 IMPALA COUNT :78 MONGO COUNT : 78 IMPALA COUNT :252 MONGO COUNT : 258 IMPALA COUNT :3008 MONGO COUNT : 3064 我想删除所有内容并保持如下状态 941 980 78 78 252 258 3008 3064 任何人都可以为此推荐任何shell脚本。单向: cut -

我有一个如下的文本文件

   IMPALA COUNT :941 MONGO COUNT : 980
    IMPALA COUNT :78 MONGO COUNT : 78
    IMPALA COUNT :252 MONGO COUNT : 258
    IMPALA COUNT :3008 MONGO COUNT : 3064
我想删除所有内容并保持如下状态

941 980
78 78
252 258
3008 3064
任何人都可以为此推荐任何shell脚本。

单向:

cut -d':' -f2,3 file.txt | cut -d' ' -f1,5
另一个:

awk '{print substr($3, 2) " " $7}' file.txt

提取两位数字的sed解决方案:

sed -r 's/[^0-9]*([0-9]+)[^0-9]*([0-9]+).*/\1 \2/g' file
这里有几个选项:

grep -Eo '[0-9]+' file | paste -d " " - -
awk -F'[ :]+' '{print $4, $7}' file
awk -F: '{print $2+0, $3}' file
perl -lne '@matches = /(?<=:) *(\S+)/g; print join " ", @matches' file
grep-Eo'[0-9]+'文件|粘贴-d'--
awk-F'[:]+'{print$4,$7}文件
awk-F:“{print$2+0,$3}”文件
perl-lne'@matches=/(?
也就是说:用数字序列
\1
加上一个空格替换任何非冒号序列
[^:::]*
,后跟冒号和可能的空格
:*
,后跟数字序列和可能的空格
\([0-9]*\)*
,然后删除行中的最后一个空格

sed -r 's/[^0-9]+://g' file
它只匹配一个数字
[^0-9]+
后面跟一个
的所有不同字符,然后将它们删除


例子 文件的格式是否与示例完全相同?每行有两个条目,每个冒号前有两个单词,第一个冒号后没有空格,第二个冒号后有一个空格,冒号前没有数字,冒号后只有数字?
sed -r 's/[^0-9]+://g' file
$ cat file
   IMPALA COUNT :941 MONGO COUNT : 980
    IMPALA COUNT :78 MONGO COUNT : 78
    IMPALA COUNT :252 MONGO COUNT : 258
    IMPALA COUNT :3008 MONGO COUNT : 3064

$ sed -r 's/[^0-9]+://g' file
941 980
78 78
252 258
3008 3064