unix shell的cat命令如何不过滤TAB字符?

15次阅读

现在有一个文本文件,每一行都有10个字段,每个字段之间用TAB隔开,我想在shell中通过cat每read一行再awk -F” “得到每个字段的值。但是文件内容经过cat之后,就自动把TAB转换成空格了,导致awk -F” “的时候得不到我想要的变量.

有没有什么办法能阻止cat修改原文本内容,或者有其他的替代方法么?

我用的tail+head效率非常非常低,所以想问问大家有没有好的办法。

#!/bin/ksh
while [ "$LINE_COUNT" -gt 1 ]
do
    tail -$LINE_COUNT $FILE_NAME | head -n1 | awk -F"   " '{print 

$0}'|\
        read h1 h2 h3 h4 h5 h6 h7 h8 h9 h10
    echo $h2 
    echo $h3 
    ((LINE_COUNT=LINE_COUNT-1))
done

faker

这个问题其实非常简单的,看下面的代码就知道了

while read h1 h2 h3 h4 h5 h6 h7 h8 h9 h10; do
    echo $h2
    echo $h3
done <"$FILE_NAME"

moonfruit

cat应该不会把TAB转换成空格的。
你用cat -a 查看一下文件,看看到底是不是TAB。

Dap

正文完