Linux bash脚本逐行删除部分字符串

时间:2015-05-27 10:20:28

标签: linux bash awk sed string-parsing

greping命令输出后,我得到以下结果:

PAPU 0  
1000         GPRS ATTACH SUCC GB         2400       2382       2333       (10) 
1244         GPRS ATTACH FAIL GB         1216       1219       1252       (10) 
16000        GPRS ATTACH SUCC IU         986        986        1027       (10) 
16001        GPRS ATTACH FAIL IU         170        185        171        (10) 
2000         PDP-C ACTIVATION SUCC GB    5356       5138       5030       (10) 
2109         PDP-C ACTIVATION FAIL GB    13         15         54         (10) 
17000        PDP-C ACTIVATION SUCC IU    3637       3880       3887       (10) 
17001        PDP-C ACTIVATION FAIL IU    257        341        336        (10) 

现在我想将一些细节导出到数据库。但我尝试了很多变种,但都失败了。据我所知得到以下结果我必须使用' sed'或者' awk'。我怎么能得到如下结果?

PAPU_0  
2400
1216
986
170
5356
13
3637
257

感谢。

2 个答案:

答案 0 :(得分:1)

您可以按照以下步骤执行此操作:

  1. 首先阅读数组check
  2. 中的所有行
  3. 迭代你在数组中获得的每一行
  4. 代码:

    for i in "${check[@]}"
    do
    set  -- $i
    # now you know that last 4th column contains the needed entries
    # lets say you stored the length of array in var `length`
    value=$(echo $(($length-3)))
    echo $value
    done
    

答案 1 :(得分:0)

你可以使用这个awk程序:

awk '{ if ($6 == "") { sub(/ /, "_", $0); print $0; } else { print $6; } }'

如果第六列不存在,则会将空格更改为下划线(将PAPU 0更改为PAPU_0),否则只会打印第六列。