在bash中处理文件的每一行

Nif*_*fle 12 bash shell bash-scripting

当我想对文件中的每一行做一些事情时,我通常会写

cat my_file | while read a
do
gzip "$a"
done
Run Code Online (Sandbox Code Playgroud)

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

我想知道的是是否有另一种方法来获取线条而不是cat file | while read?

Liq*_*ire 28

你不需要使用cat

while read line; do
    echo "$line"
done < my_file
Run Code Online (Sandbox Code Playgroud)

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


gar*_*ohn 5

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

xargs -L1 gzip < my_file
Run Code Online (Sandbox Code Playgroud)

-L1选项告诉一次xargs处理一个输入行。您也可以看看GNU parallel,它与GNU parallel非常相似,xargs但在某些情况下更强大。