@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как в bash обработать кучу строк?

Есть текстовый файл, мы из него grep'ом выдергиваем несколько строк. а как их, собственно, обработать по отдельности?
допустим мы сделали что-то похожее на
temp=$(cat file.txt | grep "string")
и как дальше работать с $temp ?
  • Вопрос задан
  • 824 просмотра
Пригласить эксперта
Ответы на вопрос 7
planc
@planc
[13:34][dka@desktop: /tmp ] 
 $  cat 1.txt 
строка 1
строка 2
строка 3
строка 4
строка 5
строка 2
[13:35][dka@desktop: /tmp ] 
 $  cat 1.txt | grep 2 |while read line; do echo $line 'добавили еще 3';done
строка 2 добавили еще 3
строка 2 добавили еще 3
Ответ написан
Комментировать
Сделайте
temp=$(cat file.txt | grep "string"| xargs -n1)
Тогда у вас будет массив строк по которому можно пустить цикл перебора. Например
for s in $temp; do
echo $s
done
Ответ написан
Комментировать
@Ethril
man xargs
Ответ написан
Комментировать
@abcd0x00
и как дальше работать с $temp ?

echo "$temp" | что-то работает дальше

Пример
[guest@localhost ~]$ text=$(head -3 /etc/passwd)
[guest@localhost ~]$ 
[guest@localhost ~]$ echo "$text"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[guest@localhost ~]$ 
[guest@localhost ~]$ echo "$text" | grep oo
root:x:0:0:root:/root:/bin/bash
[guest@localhost ~]$
Ответ написан
Комментировать
while read line
do
echo $line
<или_что_еще_вы_хотите_делать отдельно_с_каждой_строчкой>
done < $temp
Ответ написан
Комментировать
@GermSerg
echo $temp>temp
awk '{ system ("echo "$0) }' temp
Ответ написан
delvin-fil
@delvin-fil
Crazy Linux-admin
sed же
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы