BASH - 简单的第一个字符和最后一个字符
问题描述:
只要之前删除空格的第一个字符和最后一个字符之前删除空格BASH - 简单的第一个字符和最后一个字符
FOO=" ffs ff ssdf hfdh hfghfghfgh hhgfg "
result
ffs ff ssdf hfdh hfghfghfgh hhgfg
谢谢
答
如果你正在使用bash V4,然后这应该适合你。
FOO=${FOO:1:-1}
答
echo " ffs ff ssdf hfdh hfghfghfgh hhgfg " | sed -e 's/^ *//g' -e 's/ *$//g'
答
回声$ FOO | sed's/^ * //'| SED的/ * $ //'
答
假设目标是要修改的变量(以降低便携的顺序排列):
# 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}
像往常一样,这是不可能推荐一个最好的方法不知道这两个你从开始和结果你想做什么。
+2
唯一的真实(就shell编码而言)的答案。保持他们来! – 2013-03-05 09:10:02
这是一个子字符串扩展。它只会从一端剥去一个字符 - 而不是所需的效果。如果你需要Bash 3,那么使用'$# - 1'而不是'-1'。 – ormaaj 2013-03-05 04:36:49