脚本宝典收集整理的这篇文章主要介绍了Shell脚本逐行读取文本文件(不改变文本格式),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
网上有很多 shell script 读文本文件的例子,但是都没有讲出故事的全部,只说了一半。举个例子,比如从一个 testfile 文件中读取如下格式的文本行:
testfile=$1
while read -r line
do
echo $line
done < $testfile
$ chmod +x readfile
$ ./readfile testfile
ls -a -l /bin | sort
ls -a -l /bin | sort | wc
ls -a -l | grep sh | wc
ls -a -l
ls -a -l | sort | wc
如果想要输出 testfile 文件原有的格式,把每行(作为整体)原封不动的打印出来怎么办?这时需要指定 IFS 变量,告诉 shell 以 "行" 为单位读取。
IFS=""
testfile=$1
while read -r line
do
echo $line
done < $testfile
$ ./readfile testfile
ls -a -l /bin | sort
ls -a -l /bin | sort | wc
ls -a -l | grep sh | wc
ls -a -l
ls -a -l | sort | wc
如果不用 IFS 的话,还有一种方法可以得到上面第二种方法的效果:
testfile=$1
x=`wc -l $testfile |awk '{print $1}'`
i=1
while [ $i -le $x ]
do
echo "`head -$i $testfile | tail -1`"
i=`expr $i + 1`
done
以上是脚本宝典为你收集整理的Shell脚本逐行读取文本文件(不改变文本格式)全部内容,希望文章能够帮你解决Shell脚本逐行读取文本文件(不改变文本格式)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。