使用shell按行读取文件

在shell里面,按行读取文件得注意设置环境变量IFS,否则无法正确读入。

具体例子如下

OLDIFS=$IFS
IFS=$'\n'

xxx_file=/home/xx/xxx.txt
in_file=/home/xxx/xxx.in

for pattern in $(cat ${xxx_file})
do
  grep -v -e $pattern  ${in_file}
done

IFS=$OLDIFS

要按行读取csv文件时候,代码如下

IFS=","

sed "1,3d" ${input_file_1} | while read col1, col2, col3, col4
do
   echo "$col1, $col2, $col3"
done

IFS=$OLDIFS

其中 sed "1,3d" 是删除头三行的意思, 和本文无直接关系。