我将来自网络的以下结构作为如何在 BASH 中读取文件的基本示例:
cat inputfile.txt | while read line; do echo $line; done
不过,我的 inputfile.txt 是制表符分隔的,并且上述命令中出现的行是空格分隔的。
这给我的实际应用程序带来了问题,这当然比上面的更复杂:我想获取该行,基于它生成一些新的东西,然后输出原始行加上新的东西作为额外的字段。如果没有一堆管道,管道就会变得足够复杂cut -d ' '
and sed -e 's/ /\t/g'
(无论如何,这对于包含空格的制表符分隔数据来说是不安全的)。
我看过 IFS 解决方案,但它们似乎在这种情况下没有帮助。我想要的是 OFS...只不过我是在 echo 中,而不是 awk 中!我想,如果我能得到回声,逐字吐出我所给出的内容,我就会处于良好状态。有什么想法吗?谢谢!
Try:
cat inputfile.txt | while read line; do echo "$line"; done
instead.
换句话说,这不是read
更换标签,它是echo
.
请参阅以下文字记录(使用<<tab>>
选项卡所在的位置):
pax$ echo 'hello<<tab>>there' | while read line ; do echo $line ; done
hello there
pax$ echo 'hello<<tab>>there' | while read line ; do echo "$line" ; done
hello<<tab>>there
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)