Shell中的空格字符串转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell中的空格字符串转换相关的知识,希望对你有一定的参考价值。
考虑您有一个shell变量foo
,其值为
echo $foo
# Output: elementA elementB elementC
现在,我想向元素添加相同的前缀__PREFIX__
和后缀__SUFFIX__
,以便
echo $new_foo
# Output: __PREFIX__ElementA__SUFFIX__ __PREFIX__ElementB__SUFFIX__ __PREFIX__ElementC__SUFFIX__
最简单的方法是什么?
由于我不确定如何调用此类操作,因此标题可能无法正确描述问题。建议非常欢迎!
proper数组,
foo=(a b c)
您可以使用/#
运算符添加前缀,并使用/%
运算符添加后缀。不过,它确实必须分两个步骤进行。
$ foo=(a b c) $ foo=("$foo[@]/#/__PREFIX__") $ foo=("$foo[@]/%/__SUFFIX__") $ declare -p foo declare -a foo=([0]="__PREFIX__a__SUFFIX__" [1]="__PREFIX__b__SUFFIX__" [2]="__PREFIX__c__SUFFIX__")
如果只用空格分隔的字符串,则可以使用//
:
$ foo="a b c" $ foo="__PREFIX__$foo// /__SUFFIX__ __PREFIX____SUFFIX__" $ echo "$foo" __PREFIX__a__SUFFIX__ __PREFIX__b__SUFFIX__ __PREFIX__c__SUFFIX__
sed
,您可以做:prefix=__PREFIX__
suffix=__SUFFIX__
new=$(sed -E "s/(\S)(\s|$)/\1$suffix /g;s/(\s|^)(\S)/$prefix\2/g" <<< $foo)
输出:
__PREFIX__elementA__SUFFIX__ __PREFIX__elementB__SUFFIX__ __PREFIX__elementC__SUFFIX__
foo="elementA elementB elementC"
PREFIX=__PREFIX__
SUFFIX=__SUFFIX__
for f in $foo
do
new_foo="$new_foo $PREFIX$f$SUFFIX"
done
echo $new_foo
以上是关于Shell中的空格字符串转换的主要内容,如果未能解决你的问题,请参考以下文章