在Bash Shell脚本中如何删除字符串左右的空白符

时间:2019-11-20 08:53:02  来源:igfitidea点击:

问题

假设有一个变量

output =" $(awk -F',''/Name/{print $9}'input.file)"

如何删除bash变量$output前面和后面的空白符?
Bash Shell脚本中,有没有类似trim函数这样的?
Linux脚本中,如何删除字符串前后的空格?

解决方案

可以使用sed,awk,cut,tr 将$output前后的空格删除。

示例

假设变量是:

output=" This is a test"

查看的值

echo "|${output}|"

输出示例,可以看到右空格:

=    This is a test=

使用sed删除字符串前后空格示例

语法为:

echo "${output}" | sed -e 's/^[ \t]*//'

输出示例:

This is a test

使用bash语法删除字符串前后空格示例

删除字符串前面的空格语法:

${var##*( )}

删除字符串后面的空格语法:

${var%%*( )}

示例

shell脚本删除字符串前后空格:

## 将匹配模式打开
shopt -s extglob
output="    This is a test    "

## 删掉前面的空格
output="${output##*( )}"
 
## 删掉后面的空格
output="${output%%*( )}"
echo "|${output}"
 
## 将匹配模式关闭
shopt -u extglob

使用awk删除字符串前后空格示例

output="    This is a test    "
echo "|${output}|"
 
## 通过正则表达式进行替换
echo "${output}" | awk '{gsub(/^ +| +$/,"")} {print "=" ##代码## "="}'

^ +表示匹配开头的所有空格。
+$表示匹配结尾的所有空格。