使用awk或sed命令从文件行中删除字母和括号

时间:2019-05-30 20:10:01

标签: awk

我有一个如下的输入文件,

group_velocity: [     0.0000000      0.0000000      0.0000000 ]
group_velocity: [     6.8213667      5.2673206      0.0002496 ]
group_velocity: [    19.0751734     29.0686833      0.0006979 ]

现在,我想使用awk / sed命令,这样输出文件将如下所示:

   0.0000000      0.0000000      0.0000000 
   6.8213667      5.2673206      0.0002496 
   19.0751734     29.0686833     0.0006979

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

这有效:

echo "group_velocity: [     0.0000000      0.0000000      0.0000000 ]
group_velocity: [     6.8213667      5.2673206      0.0002496 ]
group_velocity: [    19.0751734     29.0686833      0.0006979 ]" | awk '{print $3, $4, $5}'

致谢。

答案 1 :(得分:1)

如果数据始终都是相同格式,则应该这样做:

awk '{print $3,$4,$5}' file
0.0000000 0.0000000 0.0000000
6.8213667 5.2673206 0.0002496
19.0751734 29.0686833 0.0006979

如果格式化很重要:

awk '{print $3,$4,$5}' OFS="\t" file
0.0000000       0.0000000       0.0000000
6.8213667       5.2673206       0.0002496
19.0751734      29.0686833      0.0006979

答案 2 :(得分:1)

$ tr -dc '0-9. \n' < file
      0.0000000      0.0000000      0.0000000
      6.8213667      5.2673206      0.0002496
     19.0751734     29.0686833      0.0006979

答案 3 :(得分:0)

sed  's/^.*\[\|\].*//g' input_file

这是删除从开始到[]到结束的所有内容。

或使用向后引用:

 sed 's/.*\[\([^]]*\)\].*/\1/g' input_file

这将提取两个[]之间的文本。