现在有一个文本文件,每一行都有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
这个问题其实非常简单的,看下面的代码就知道了
while read h1 h2 h3 h4 h5 h6 h7 h8 h9 h10; do
echo $h2
echo $h3
done <"$FILE_NAME"
cat应该不会把TAB转换成空格的。
你用cat -a 查看一下文件,看看到底是不是TAB。
正文完