Имеется такое содержимое файла:
1 2 3 4 5 6 7 |
mail.ru 19.128.67.32 apache 21.07.2015:10:09:43 "GET /?login=blabla» mail.ru 10.150.20.4 apache 21.07.2015:10:09:43 "GET /? action=sent&mailid=h8547243n4b323d?type=nginx» mail.ru 83.1.200.124 nginx 21.07.2015:10:09:43 "GET /news» mail.ru 13.18.230.12 apache 21.07.2015:10:09:43 "GET /news/it» mail.ru 67.17.129.6 nginx 21.07.2015:10:09:43 "GET /?login=tralala» mail.ru 10.118.20.4 apache 21.07.2015:10:09:43 "GET /inbox» |
Необходимо:
Вывести строки, в которых фигурирует только apache.
1 |
grep -n "apache" file.txt = awk '/apache/' file.txt |
Отформатировать вывод таким образом, чтобы показывались
только
SITE IP GET
например
mail.ru 19.128.67.32 «GET /?login=blabla»
1 |
awk '{print $1, $2, $5, $6}' file.txt |
Напишите на bash скрипт, который выполняет такие действия:
Если отсутствует каталог «catalog» создать его, затем создать в
каталоге файлы: file1, file2, file3, … , file21. В файлах, в названиях
которых встречается цифра 1 заменить её на слово «One»,
например file1 => fileOne , переименовав этот файл. Затем имя
каждого файла занести в массив filesArray[@] и вывести массив на
экран.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash if [[ ! -e "catalog" ]]; then mkdir "catalog" cd catalog for cFile in {1..21}; do cFile=$( echo -n "$cFile" | sed 's/1/One/g') touch file$cFile done echo "Каталог создан" ls | cat | tr '\n' ' ' > ls.txt read -a arr < ls.txt echo ${arr[@]} else echo "Каталог сущуествует" fi |
Найти упоминание строки кроме директории
1 |
grep -rl "title" * --exclude-dir=dir_no_show |
Посчитать кол-во файлов в котором нашли искомое
1 |
grep -rl "title" * --exclude-dir=dir_no_show | wc -l |