извлечь определенную подстроку

простое использование:

unzip zipfile.zip path/inside/zip/file.txt

и он раздует файл.

$ unzip -l./../html.zip | grep wp-config

     3328  07-22-2019 15:10   html/wp-config.php

     2898  01-07-2019 23:30   html/wp-config-sample.php

$ unzip./../html.zip html/wp-config.php

     Archive: ./../html.zip
     inflating: html/wp-config.php

$ ls -lrth

     total 4.0K
     drwxr-sr-x 2 apache apache 4.0K Jul 26 14:41 html

$ ls -lrth html/*

     total 4.0K
     -rw-rw-rw- 1 apache apache 3.3K Jul 22 15:10 wp-config.php
0
21.08.2021, 20:10
3 ответа

С awk:

awk 'NR >1 {split($1, array, "_"); print array[1] "_" array[2]; split($2, array, "_"); print array[1] "_" array[2]}' FILE
1
21.08.2021, 20:59

Если у вас есть GNU grep, вы можете выбрать совпадающий шаблон, отображая по одному в строке, как здесь

grep -oE '\<chr[[:digit:]]+_[[:digit:]]+' file

Регулярное выражение можно разбить следующим образом

  • \<-совпадение с началом слова
  • chr-буквенные символы
  • [[:digit:]]+-одна или несколько (+)цифр
  • _-буквальное подчеркивание
1
21.08.2021, 20:55

Вы не можете использовать здесь cut, так как вам нужно будет использовать оба банка и _в качестве разделителя для выбора нужных вам полей, а cutподдерживает только разделители из одного символа.

Использование awkвместо:

awk -F '[[:blank:]_]+' 'NR > 1 { $0 = sprintf("%s_%d %s_%d", $1, $2, $6, $7) }; 1' file

Это обрабатывает ввод как строки, содержащие поля, разделенные пробелами или символами подчеркивания. Заголовок в первой строке передается без изменений, но другие строки переписываются с использованием 1-го, 2-го, 6-го и 7-го пробела -или -подчеркивания -поля с разделителями.


Вы могли бы использовать cut, но это было бы немного беспорядочно, и вы бы потеряли заголовок:

tail -n +2 file | tr -s '[:blank:]_' '[\t*]' | cut -f 1,2,6,7 | tr '\t' '\n' | paste -d '_ ' - - - -

Это удаляет первую строку из ввода с помощью tail, затем преобразует все пробелы и символы подчеркивания в табуляции (, удаляя последовательные табуляции из результата ), вырезая нужные столбцы,преобразует столбцы в отдельные строки с помощью этой секунды tr, затем использует pasteдля восстановления данных для окончательного результата.

0
24.08.2021, 23:00

Теги

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