在Unix中删除两个字符之间的文本

时间:2018-03-29 20:25:27

标签: unix awk sed

我想删除两个字符之间的文本(空格字符和K之间) 输入字符串是

VMDJBJ 4G 15K300GB 7_34KDRV 345KUPG

预期输出为:

VMDJBJ 4G 300GB DRV UPG

我使用下面的sed命令并将VMDJBJUPG作为输出。

echo $'VMDJBJ 4G 15K300GB 7_34KDRV 345KUPG'| sed 's/[[:space:]].*K//'
VMDJBJUPG

专家可以在这帮助我吗?

2 个答案:

答案 0 :(得分:2)

使用此:

echo 'VMDJBJ 4G 15K300GB 7_34KDRV 345KUPG' |
    sed -E 's/[^[:space:]]+K//g'

echo 'VMDJBJ 4G 15K300GB 7_34KDRV 345KUPG' |
    sed -E 's/[^[:blank:]]+K//g'


输出:

VMDJBJ 4G 300GB DRV UPG


  

$ man gawk | grep -E '\[:blank:\]|\[:space:\]'
        [:blank:]空格或制表符。
        [:space:]空格字符(例如空格,制表符和换页符,仅举几例)。


  • [^]表示除字符类
  • 之外的所有内容

答案 1 :(得分:2)

现在也在这里添加awk解决方案。

echo 'VMDJBJ 4G 15K300GB 7_34KDRV 345KUPG' |  awk '{for(i=1;i<=NF;i++){sub(/.*K/,"",$i)}} 1'