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
С awk:
awk 'NR >1 {split($1, array, "_"); print array[1] "_" array[2]; split($2, array, "_"); print array[1] "_" array[2]}' FILE
Если у вас есть GNU grep
, вы можете выбрать совпадающий шаблон, отображая по одному в строке, как здесь
grep -oE '\<chr[[:digit:]]+_[[:digit:]]+' file
Регулярное выражение можно разбить следующим образом
\<
-совпадение с началом слова chr
-буквенные символы [[:digit:]]+
-одна или несколько (+
)цифр _
-буквальное подчеркивание Вы не можете использовать здесь 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
для восстановления данных для окончательного результата.