我试图完成以下结果
给定使用以下参数执行的bash脚本
#Input
./xxx.sh "\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\"\\\"P5\\\""
我想删除第五个参数
#Output
# "\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\""
第五个参数无关紧要是空\\\"\\\"
或不\\\"P5\\\"
我做了下面的脚本,但只有在最后一个参数为空时才会删除。如果我还需要删除第三个参数,例如,我该如何进行?
a=$*
b=` echo $a | sed 's/[\\"[:alnum:]\\"]*$//g' `
b=` echo $a | sed 's/[\\"*\\"]*$//g' `
#the last try bellow give me the reasonable result when the fifth param is empty
b=` echo $a | sed 's/[\\"\\"]*$//g' `
echo $b
对不起,我到目前为止还是一个贝壳人
我在ksh shell中遇到了问题,但这有效
b=` echo $a | sed -e 's/\\\\"[^"]*\\\\"$//g' `
谢谢你们
答案 0 :(得分:2)
使用awk
更容易做到:
a="\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\"\\\"P5\\\""
awk 'BEGIN{FS=OFS="\\\\\\\""} {$10="";NF-=2}1' <<< "$a"
\\\"P1\\\"\\\"P2\\\"\\\"P3\\\"\\\"P4\\\"
答案 1 :(得分:1)
使用sed:
b=`sed 's/\\\\"[^"]*\\\\"$//g' <<< "$a"`