我从网上采取以下结构作为如何从BASH中的文件读取的基本示例:
cat inputfile.txt | while read line; do echo $line; done
我的inputfile.txt是制表符分隔的,并且来自上述命令的行是以空格分隔的。
这在我的实际应用程序中引起了我的问题,这当然比上面的更复杂:我想采取行,基于它生成一些新的东西,然后输出原始行加上新的东西作为额外的领域。并且管道很复杂,没有一堆cut -d ' '
和sed -e 's/ /\t/g'
(对于包含空格的制表符分隔数据来说,这是不安全的。)
我看过IFS解决方案,但在这种情况下它们似乎没有帮助。我想要的是一个OFS ...除了我是回声,而不是awk!我想如果我能够得到回应来吐出我给它的东西,逐字逐句,我会处于良好的状态。有什么想法吗?谢谢!
答案 0 :(得分:30)
尝试:
cat inputfile.txt | while read line; do echo "$line"; done
代替。
换句话说,它不是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