如何消除Bash脚本中两个cut命令输出间的多余空格?
用awk简化实现,避免多余空格问题
直接用awk就能一步完成需求,无需多个cut命令拼接,完美解决空格多余的问题:
awk '{ line_len = length($0) if (line_len < 7) { print substr($0, 2, 1) } else { print substr($0, 2, 1) substr($0, 7, 1) } }'
说明:
length($0)计算当前行的总字符数substr($0, 2, 1)提取第2个ASCII字符(第二个参数是起始位置,第三个是提取长度)- 当行长度超过7时,直接将两个提取的字符拼接输出,不会产生额外空格
如果喜欢更紧凑的写法,也可以用三元表达式压缩成一行:
awk '{print (length($0) < 7) ? substr($0, 2, 1) : substr($0,2,1)substr($0,7,1)}'
测试验证:
- 输入
T.T - Test Text,输出.T,符合预期 - 输入
T e s t,输出空格(原行第2个字符),不会误删输入中的空格
内容的提问来源于stack exchange,提问作者the_fearless_knight
相关产品推荐
相关产品推荐

