6

Когда я хочу что-то сделать с каждой строкой в файле, я обычно пишу

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

GZIP это просто пример, это может быть что угодно.

Мне интересно, есть ли другой способ получить строки, чем cat file | while read?

3 ответа3

14

Вам не нужно использовать cat:

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

Я не думаю, что есть более простой способ, хотя.

3

Я думаю, что проще всего было бы использовать xargs , например:

xargs -L1 gzip < my_file

Опция -L1 указывает xargs обрабатывать одну строку ввода за раз. Вы также можете взглянуть на параллель GNU, которая очень похожа на xargs но в некоторых ситуациях более мощна.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .