linux +如何只从行中删除匹配的数字

时间:2013-04-29 06:20:12

标签: linux perl shell sed ksh

如果数字完全匹配,如何删除

我编写了简单的sed命令,下面的例子是sed,

我的目标是从$ NUMBERS

列表中删除数字“1”

我需要添加到我的sed语法中才能删除匹配的数字/ s

我的例子:

 [u@h w]# NUMBERS="11 12 13"
 [u@h w]# DEL_NUM="1"
 [u@h w]# NUMBERS="1 11 12 13"
 [u@h w]# echo $NUMBERS | sed s"/$DEL_NUM/ /g"


      2  3

虽然预期结果应为

      11 12 13

3 个答案:

答案 0 :(得分:3)

 echo $NUMBERS | perl -pe "s/\b$DEL_NUM\b/ /g"

\ b匹配单词边界。

答案 1 :(得分:1)

sed中有一种方法:用<>包裹要匹配的单词:

$ echo $NUMBERS | sed "s/\<$DEL_NUM\>/ /g"
  11 12 13

这只会取代完全匹配。

关于sidharth answer

\b引用也适用于sed:

$ echo $NUMBERS | sed "s/\b$DEL_NUM\b/ /g"
  11 12 13

答案 2 :(得分:0)

仅使用ksh builtins:

function delnum {
    typeset DEL_NUM=$1 i 
    shift || return
    for i; do
        [[ $i == $DEL_NUM ]] || print -n $i ""
    done
}
DEL_NUM="1"
NUMBERS="1 11 12 13"
delnum ${DEL_NUM} ${NUMBERS}
11 12 13