Shell脚本中wc -c输出插入字符串时出现多余空格问题
问题解决:Shell脚本输出多余空格修复
问题根源
wc -c的默认输出会自带前导空格(用于数字对齐排版),直接把结果赋值给变量后,这些空格会被带到最终输出里。- 脚本中
emptyline那一行存在语法错误——变量赋值和echo命令在同一行没有正确分隔,会导致执行异常。
修复后的脚本
#!/bin/bash # 提取wc输出的纯数字,剔除前导空格 char=$(wc -c < "$1" | awk '{print $1}') echo "This file has $char characters in it." # 处理不含换行符的字符数,同样剔除空格 nolines=$(tr -d "\n" < "$1" | wc -c | awk '{print $1}') echo "This file has $nolines characters not counting the new line." # 修复语法错误,添加换行分隔命令,同时提取纯数字 emptyline=$(grep -cv '\S' "$1" | awk '{print $1}') echo "This file has $emptyline empty lines." # 统计字母字符,剔除wc输出的空格 # 注:原脚本里写的是"alphanumeric characters"(字母数字),但实际只统计了字母,这里同步修正描述 alphachar=$(tr -cd '[:alpha:]' < "$1" | wc -c | awk '{print $1}') echo "This file has $alphachar alphabetic characters."
额外优化建议
- 删掉无用的
cat命令:比如把cat $1 | wc -c改成wc -c < "$1",更高效且避免文件名含空格时出错。 - 变量引用加上双引号
"$1",兼容带空格的文件名场景。
测试效果
用你的example_file执行修复后的脚本,输出将不再有多余空格,格式完全符合预期。
内容的提问来源于stack exchange,提问作者justin8p
相关产品推荐
相关产品推荐

