BASH - 只需在第一个字符和最后一个字符之前删除空格

时间:2013-03-05 01:56:18

标签: bash

只需删除第一个字符和最后一个字符前的空格

FOO="   ffs ff ssdf hfdh     hfghfghfgh hhgfg      "

result
ffs ff ssdf hfdh     hfghfghfgh hhgfg

谢谢

4 个答案:

答案 0 :(得分:4)

假设目标是修改变量(按可降低的可移植性顺序):

# POSIX
foo=${foo#"${foo%%[! ]*}"} foo=${foo%"${foo##*[! ]}"}

# Bash/ksh
${BASH_VERSION+'false'} || shopt -s extglob
foo=${foo##+( )} foo=${foo%%+( )}

# Bash4/ksh
IFS=' ' read -rd '' foo < <(printf %s "$foo")

# Bash4/ksh93
${KSH_VERSION+'false'} || typeset -n BASH_REMATCH=.sh.match
[[ $foo =~ ^\ *([! ].*[! ])\ *$ ]]
foo=${BASH_REMATCH[1]}

# ksh93
foo=${foo/~(K)*(\ )@([! ]*[! ])*(\ )/\2}

像往常一样,如果不知道你的开头是什么以及你想对结果做什么,就不可能推荐一种最好的方法。

答案 1 :(得分:1)

echo "   ffs ff ssdf hfdh     hfghfghfgh hhgfg      " | sed -e 's/^ *//g' -e 's/ *$//g'

答案 2 :(得分:0)

如果您使用的是bash v4,那么这应该适合您。

FOO=${FOO:1:-1}

答案 3 :(得分:0)

回声$ FOO | sed's / ^ * //'| sed's / * $ //'