существует ли Webview для debian, чтобы узнать, какое программное обеспечение, пакеты и т. Д. Установлены? [закрыто]

Вы можете разделить файл, затем запустить grep -q some_method для каждого фрагмента и удалить его, если false например,

for file in part-*.txt; do
grep -q some_method "$file"
  if [ $? -ne 0 ]
    then
      rm "$file"
  fi
done

или
используйте два прохода - удаление из ввода "частей", содержащих some_method , а затем разделение результата, напримериспользуя sed для первого прохода и ваш код awk для второго прохода:

sed -e '1{h;d;}' -e '/ID/!{H;$!d;}' -e 'x;/some_method/!d' infile | \
awk '/ID/{++part}{print > sprintf("part-%03d.txt", part)}'

sed копирует 1-ю строку поверх старого буфера h и d удаляет его, затем добавляет каждую строку, которая не соответствует ID , в старый буфер H , удаляет ее, если это не последняя строка, и e x изменяет буферы в строках, которые соответствуют ID , удаляя пространство шаблонов, если оно не содержит some_method . Затем результат передается на awk . Если вы получаете ошибку слишком много открытых файлов , вам придется close () файлы:

sed -e '1{h;d;}' -e '/ID/!{H;$!d;}' -e 'x;/some_method/!d' infile | \
awk '/ID/{++part}{close(fn);fn=sprintf("part-%03d.txt", part);print >> fn}'

или, если вы используете gnu / что угодно, вы можете использовать csplit вместо awk :

sed '1{h;d};/ID/!{H;$!d};x;/some_method/!d' infile | \
csplit -f 'part-' -b '%03d.txt' -sz - /ID/ '{*}'
0
15.10.2013, 20:11
0 ответов

Теги

Похожие вопросы