我将网络上的以下结构作为如何在 BASH 中读取文件的基本示例:
cat inputfile.txt | while read line; do echo $line; done
不过,我的 inputfile.txt 是用制表符分隔的,上面命令中的行是用空格分隔的。
这在我的实际应用中给我带来了问题,当然比上面的要复杂:我想把这条线,根据它生成一些新的东西,然后把原来的那条线加上新的东西作为extra输出领域。如果没有一堆 cut -d ' '
和 sed -e 's//\t/g'
(这不会无论如何,对于包含空格的制表符分隔数据都是安全的)。
我看过 IFS 解决方案,但在这种情况下它们似乎没有帮助。我想要的是一个 OFS...除了我在 echo ,而不是 awk!我认为,如果我能得到 echo 来逐字逐句地吐出我给它的内容,我就会处于良好状态。有什么想法吗?谢谢!
最佳答案
尝试:
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
关于bash - Echo 将我的制表符更改为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5127954/