从shell脚本中删除每行中的字符

时间:2014-10-22 13:07:05

标签: 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

任何人都可以为此建议任何一个shellcript。

5 个答案:

答案 0 :(得分:3)

一种方式:

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

另:

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

答案 1 :(得分:1)

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

sed -r 's/[^0-9]*([0-9]+)[^0-9]*([0-9]+).*/\1 \2/g' file

答案 2 :(得分:1)

以下是一些选项:

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

答案 3 :(得分:1)

sed -e 's/[^:]*: *\([0-9]*\) */\1 /g;s/ $//'

即:替换任何非冒号[^:]*的序列,后跟冒号,可能是空格: *,后跟一系列数字,可能还有空格\([0-9]*\) *,数字序列\1加一个空格;然后删除该行中的最后一个空格。

答案 4 :(得分:1)

sed -r 's/[^0-9]+://g' file

它只匹配数字[^0-9]+后跟:的所有字符并删除它们。


实施例

$ 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