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
谢谢。
您可以按照以下步骤完成:
- 首先读取数组中的所有行
check
- 迭代数组中的每一行
代码:
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
),否则只打印第六列。
在 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
谢谢。
您可以按照以下步骤完成:
- 首先读取数组中的所有行
check
- 迭代数组中的每一行
代码:
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
),否则只打印第六列。