在 bash 中处理文件的每一行

在 bash 中处理文件的每一行

当我想对文件中的每一行进行某些操作时,我通常会写

cat my_file | while read a
do
gzip "$a"
done

gzip 只是一个例子,它可以是任何东西。

我想知道的是,除了 之外,是否还有其他方法可以获取这些线条cat file | while read

答案1

您不需要使用cat

while read line; do
    echo "$line"
done < my_file

但我不认为有更简单的方法。

答案2

我认为最简单的方法是使用xargs,例如,

xargs -L1 gzip < my_file

-L1/选项--max-lines=1指示xargs一次处理一行输入。你可以看看GNU并行也非常相似,xargs但在某些情况下更强大。

答案3

IFS="\n\b"; for i in $MYROWOFCONTENT; do echo $i; done;

相关内容