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


现在有一个文本文件,每一行都有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

unix 解析文本 ksh shell

善良的丸子 11 years, 2 months ago

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

suilly answered 11 years, 2 months ago

Your Answer