如果数字完全匹配,如何删除
我编写了简单的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
答案 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