【发布时间】:2011-07-04 22:02:53
【问题描述】:
我从网上获取以下结构作为如何从 BASH 中读取文件的基本示例:
cat inputfile.txt | while read line; do echo $line; done
不过,我的 inputfile.txt 是制表符分隔的,并且上述命令中的行是空格分隔的。
这导致我在实际应用中出现问题,当然比上面的要复杂:我想取行,根据它生成一些新的东西,然后将原始行加上新的东西作为额外的输出字段。如果没有一堆cut -d ' ' 和sed -e 's/ /\t/g'(无论如何对于包含空格的制表符分隔的数据来说,这将是不安全的),管道将变得足够复杂。
我查看了 IFS 解决方案,但在这种情况下它们似乎没有帮助。我想要的是一个OFS……除了我在回声中,而不是awk!我认为如果我能得到回声来吐出我给它的东西,逐字逐句,我会处于良好状态。有什么想法吗?谢谢!
【问题讨论】:
-
你通常不需要使用 cat 作为管道的一部分,只需直接从文件中重定向下一个命令的标准输入:
while read line; do echo $line; done < inputfile.txt