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

Linux bash script removing part of string line by line

在 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

谢谢。

您可以按照以下步骤完成:

  1. 首先读取数组中的所有行check
  2. 迭代数组中的每一行

代码:

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

您可以使用这个 awk 程序:

awk '{ if ( == "") { sub(/ /, "_", [=10=]); print [=10=]; } else { print ; } }'

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