Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:overall:views [2023/03/21 04:53] admin |
linux:overall:views [2024/02/10 14:58] (текущий) admin [sed] |
||
---|---|---|---|
Строка 16: | Строка 16: | ||
* **-w [--word-regexp] (-x [--line-regexp])** - совпадение только всего слова (всей строки) | * **-w [--word-regexp] (-x [--line-regexp])** - совпадение только всего слова (всей строки) | ||
+ | |||
+ | < | ||
+ | < | ||
<code bash> | <code bash> | ||
# Извлечение IP адреса | # Извлечение IP адреса | ||
echo -e " | echo -e " | ||
- | |||
# Извлечение IP адресов с ошибкой авторизации из auth.log | # Извлечение IP адресов с ошибкой авторизации из auth.log | ||
cat / | cat / | ||
- | |||
# Убрать из вывода пустые и закоментированные строки | # Убрать из вывода пустые и закоментированные строки | ||
cat / | cat / | ||
- | |||
# Список IP активных подключений | # Список IP активных подключений | ||
ss -ntlua | grep " | ss -ntlua | grep " | ||
</ | </ | ||
- | < | + | : Скриптом добавить эти адреса в блок |
- | < | + | |
<code bash> | <code bash> | ||
- | # | + | |
- | # Сначала создаем отдельную цепочку для этого и ставим ее в начало " | + | |
iptables -N BLACKLIST | iptables -N BLACKLIST | ||
iptables -I INPUT -j BLACKLIST | iptables -I INPUT -j BLACKLIST | ||
- | + | | |
- | # Затем читаем из файла список адресов и добавляем правила | + | |
readarray lst < /../ip.list | readarray lst < /../ip.list | ||
for i in " | for i in " | ||
Строка 59: | Строка 56: | ||
* **-F** - указать разделитель во входных данных, | * **-F** - указать разделитель во входных данных, | ||
* **substr (s, a, b)** - подстрока строка-s, | * **substr (s, a, b)** - подстрока строка-s, | ||
+ | * | ||
+ | * **Встроенные переменные: | ||
+ | * **NF** - Количество полей в записи | ||
+ | * **NR** - Номер текущей записи | ||
+ | * **FILENAME** - Имя входного файла, который в данный момент обрабатывается | ||
+ | * **FS** - Разделитель полей | ||
+ | * **RS** - Разделитель записей | ||
+ | * **OFS** - Разделитель выходных полей | ||
+ | * **ORS** - Разделитель выходной записи | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Преимущество перед sed в том что сразу экранируются некоторые символы, | ||
+ | Пропустил / а вот & b \ тоже не пропустил | ||
- | :!: Пример: | ||
<code bash> | <code bash> | ||
- | # cat 'text' | + | |
+ | awk '{gsub(/< | ||
+ | |||
+ | # Сохранить резы в тот же файл, чтобы сразу нет такого параметра | ||
+ | awk '{gsub(/< | ||
+ | |||
+ | # Тоже самое только групповая замена | ||
+ | awk '{\ | ||
+ | gsub(/< | ||
+ | gsub(/< | ||
+ | gsub(/< | ||
+ | print }' | ||
+ | |||
+ | # Сохранить изменения в этом же файле !! Это уже другая утилита | ||
+ | gawk -i inplace '{ gsub(/< | ||
</ | </ | ||
+ | </ | ||
- | :!: Пример: Разделитель | + | |
+ | |||
+ | < | ||
+ | < | ||
<code bash> | <code bash> | ||
- | # cat ' | + | cat ' |
- | </ | + | |
+ | cat ' | ||
+ | # Вывод имени файла и кол-во строк | ||
+ | awk 'END { print " | ||
+ | awk ' | ||
+ | awk 'BEGIN { print " | ||
+ | awk 'BEGIN { printf "%-10s %s\n", " | ||
+ | printf "%-10s %s\n", " | ||
+ | { printf "%-10s %s\n", $1, $2 }' mail-data | ||
- | ==== Встроенные переменные ==== | + | awk '/ |
- | * **NF** - Количество полей в записи | + | </ |
- | * **NR** - Номер текущей записи | + | |
- | * **FILENAME** - Имя входного файла, который в данный момент обрабатывается | + | Группировка и сложение |
- | * **FS** - Разделитель полей | + | |
- | * **RS** - Разделитель записей | + | |
- | * **OFS** - Разделитель выходных полей | + | |
- | * **ORS** - Разделитель выходной записи | + | |
- | :!: Пример: Вывод имени файла и кол-во строк | + | |
<code bash> | <code bash> | ||
- | # awk 'END { print "File", | + | US|A|1000|2000 |
+ | US|B|1000|2000 | ||
+ | US|C|1000|2000 | ||
+ | UK|1|1000|2000 | ||
+ | UK|1|1000|2000 | ||
+ | UK|1|1000|2000 | ||
+ | |||
+ | awk 'BEGIN { FS=OFS=SUBSEP="|"}{arr[$1,$2]+=$3+$4 }END {for (i in arr) print i,arr[i]}' | ||
+ | |||
+ | US|A|3000 | ||
+ | US|B|3000 | ||
+ | US|C|3000 | ||
+ | UK|1|9000 | ||
+ | |||
+ | # Вариации | ||
+ | # Сложить кол-во указанное напротив значений | ||
+ | awk 'BEGIN { FS=OFS} {arr[$1]+=$2 }END {for (i in arr) print i,arr[i]}' | ||
+ | # Два столбца | ||
+ | awk 'BEGIN { FS=OFS} {arr[$1]+=$2; | ||
</ | </ | ||
+ | </ | ||
Строка 120: | Строка 170: | ||
Можно передавать несколько команд, | Можно передавать несколько команд, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | :!: **Не прпускает символ амперсанд и оба слеша**\\ | ||
+ | |||
+ | <code bash> | ||
+ | # -i чтобы сохранить в тот же файл | ||
+ | sed -i ' | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
< | < | ||
< | < | ||
Строка 165: | Строка 228: | ||
* **a | b** - " | * **a | b** - " | ||
* **i** - не учитывать регистр | * **i** - не учитывать регистр | ||
- | * ** ** - | + | * **\K** - задает условное начало строки от найденного фрагмента |
Строка 201: | Строка 264: | ||
sudo ss -ntlua | grep " | sudo ss -ntlua | grep " | ||
</ | </ | ||
+ | |||
+ | Вывод файла, сортировка, | ||
+ | <code bash> | ||
+ | cat list.csv | sort | uniq -c | [column -t |] sort -r | ||
+ | </ | ||
+ | |||
</ | </ | ||
Строка 212: | Строка 281: | ||
* **column** - вывод в табличном виде | * **column** - вывод в табличном виде | ||
- | ===== cat ===== | + | < |
+ | < | ||
Для записи в файл можно использовать перенаправление ввода **>> | Для записи в файл можно использовать перенаправление ввода **>> | ||
* **-n (-b)** - нумеровать строки (только не пустые). | * **-n (-b)** - нумеровать строки (только не пустые). | ||
Строка 218: | Строка 288: | ||
* **-E** - показывать символ $ в конце каждой строки. | * **-E** - показывать символ $ в конце каждой строки. | ||
* **-T** - отображать символ табуляции. | * **-T** - отображать символ табуляции. | ||
+ | </ | ||
- | ===== tail ===== | + | < |
+ | < | ||
* **-f [--pid]** - авто-обновление [закрыться с процессом]. | * **-f [--pid]** - авто-обновление [закрыться с процессом]. | ||
* **-s сек** - частота обновления. | * **-s сек** - частота обновления. | ||
* **-n** - кол-во строк (10 по умолчанию). | * **-n** - кол-во строк (10 по умолчанию). | ||
+ | </ | ||
- | ===== head ===== | + | < |
+ | < | ||
* **-n** - кол-во строк (10 по умолчанию). | * **-n** - кол-во строк (10 по умолчанию). | ||
* **--lines=[-]NUM** - весь текст, кроме последних NUM строк. | * **--lines=[-]NUM** - весь текст, кроме последних NUM строк. | ||
* **-z** - символ новой строки. | * **-z** - символ новой строки. | ||
+ | </ | ||
- | ===== less ===== | + | < |
- | * **-i (-I)** - игнорировать регистр паттерна | + | < |
+ | * **-i (-I)** - игнорировать регистр паттерна | ||
* **-n (-N)** - не выводить (выводить) номера строк | * **-n (-N)** - не выводить (выводить) номера строк | ||
+ | </ | ||
+ | | ||
- | + | < | |
- | ===== column | + | < |
Можно перенаправлять вывод, можно подавать файлы. Гуглятся целый ряд всяких параметров но что то нихрена толком не работает | Можно перенаправлять вывод, можно подавать файлы. Гуглятся целый ряд всяких параметров но что то нихрена толком не работает | ||
* **-t** - для табличной формы | * **-t** - для табличной формы | ||
* **-s " | * **-s " | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | https:// | ||
+ | |||
+ | </ | ||