Инструменты пользователя

Инструменты сайта


linux:overall:views

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:overall:views [2023/05/22 15:10]
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])** - совпадение только всего слова (всей строки)
  
 +
 +<details>
 +<summary>:!: Примеры</summary>
 <code bash> <code bash>
   # Извлечение IP адреса   # Извлечение IP адреса
 echo -e "3.123.32.24\nFirst\n567" | grep -Eo "([0-9]{0,3}\.){3}[0-9]{0,3}" echo -e "3.123.32.24\nFirst\n567" | grep -Eo "([0-9]{0,3}\.){3}[0-9]{0,3}"
- 
   # Извлечение IP адресов с ошибкой авторизации из auth.log   # Извлечение IP адресов с ошибкой авторизации из auth.log
 cat /var/log/auth.log | grep Failed | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort --unique > ip.list cat /var/log/auth.log | grep Failed | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort --unique > ip.list
- 
   # Убрать из вывода пустые и закоментированные строки   # Убрать из вывода пустые и закоментированные строки
 cat /etc/telegraf/telegraf.conf | grep -Ev "^#|^  #|^$" cat /etc/telegraf/telegraf.conf | grep -Ev "^#|^  #|^$"
- 
   # Список IP активных подключений   # Список IP активных подключений
 ss -ntlua | grep "8086" | awk '{print $6}' | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort --unique ss -ntlua | grep "8086" | awk '{print $6}' | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort --unique
 </code> </code>
  
-<details> +: Скриптом добавить эти адреса в блок
-<summary>:!: Пример: Скриптом добавить эти адреса в блок </summary>+
 <code bash> <code bash>
-#!/bin/bash +  # Сначала создаем отдельную цепочку для этого и ставим ее в начало "входа" INPUT
-# Сначала создаем отдельную цепочку для этого и ставим ее в начало "входа" INPUT+
 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 "${lst[@]}" for i in "${lst[@]}"
Строка 59: Строка 56:
   * **-F** - указать разделитель во входных данных, вместо пробела   * **-F** - указать разделитель во входных данных, вместо пробела
   * **substr (s, a, b)** - подстрока строка-s, кол-во- b, начать с- a. Используется внутри 'print'   * **substr (s, a, b)** - подстрока строка-s, кол-во- b, начать с- a. Используется внутри 'print'
 +  * 
 +  * **Встроенные переменные:**
 +  * **NF** - Количество полей в записи
 +  * **NR** - Номер текущей записи
 +  * **FILENAME** - Имя входного файла, который в данный момент обрабатывается
 +  * **FS** - Разделитель полей
 +  * **RS** - Разделитель записей
 +  * **OFS** - Разделитель выходных полей
 +  * **ORS** - Разделитель выходной записи
 +
 +<details>
 +<summary>:!: Поиск и замена</summary>
 +Преимущество перед sed в том что сразу экранируются некоторые символы, но к сожалению не все\\
 +Пропустил / а вот & b \ тоже не пропустил 
  
-:!: Пример: Напечатать только первое и третье слова из каждой строки 
 <code bash> <code bash>
-cat 'textawk {'print $1,$3'}+  Просто замена, PRINT для вывода результата на консоль 
 +awk '{gsub(/<USER_NAME>/,"this_is_uname"); print }file 
 + 
 +  # Сохранить резы в тот же файл, чтобы сразу нет такого параметра 
 +awk '{gsub(/<USER_NAME>/,"this_is_uname"); print }' file > tmp && mv tmp file 
 + 
 +  # Тоже самое только групповая замена  
 +awk '{\ 
 + gsub(/<DATABASE_USER_NAME>/,"this_is_uname");
 + gsub(/<DATABASE_USER_PASSWORD>/,"this_is_passwd");
 + gsub(/<APP_URL>/,"https://my-site");
 + print }file > tmp && mv tmp file 
 + 
 +  # Сохранить изменения в этом же файле !! Это уже другая утилита 
 +gawk -i inplace '{ gsub(/<APP_URL>/, "https://my-site"}; { print }' file
 </code> </code>
 +</details>
  
-:!: Пример: Разделитель+ 
 + 
 +<details> 
 +<summary>:!: Примеры</summary>
 <code bash> <code bash>
-# cat 'text' | awk 'OFS="-" {print $1,$3}' +cat 'text' | awk {'print $1,$3'
-</code>+  Задать разделитель 
 +cat 'text' | awk 'OFS="-" {print $1,$3}' 
 +  # Вывод имени файла и кол-во строк 
 +awk 'END { print "File", FILENAME, "contains", NR, "lines." }' teams.txt
  
 +awk 'length $0 > 2' letters.txt
 +awk 'BEGIN { print "HI" } { print $0 } END { print "BYE!" }' letters.txt
  
 +awk 'BEGIN { printf "%-10s %s\n", "Col1", "Col2"; \
 +              printf "%-10s %s\n", "----", "------" } \
 +            { printf "%-10s %s\n", $1, $2 }' mail-data
  
-==== Встроенные переменные ==== +awk '/[aeiou]{5}/' /usr/share/dict/words 
-  * **NF** - Количество полей в записи +</code> 
-  * **NR** - Номер текущей записи + 
-  * **FILENAME** - Имя входного файла, который в данный момент обрабатывается +Группировка и сложение
-  * **FS** - Разделитель полей +
-  * **RS** - Разделитель записей +
-  * **OFS** - Разделитель выходных полей +
-  * **ORS** - Разделитель выходной записи +
-:!: Пример: Вывод имени файла и кол-во строк+
 <code bash> <code bash>
-awk 'END print "File", FILENAME"contains"NR"lines." }' teams.txt+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]}' myfile 
 + 
 +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]}' myfile | sort -rnk2 
 +  # Два столбца 
 +awk 'BEGIN { FS=OFS} {arr[$1]+=$2; arr2[$1]+=$3 }END {for (i in arr) print i,arr[i],arr2[i]}' myfile | sort -rnk2
 </code> </code>
 +</details>
  
  
Строка 120: Строка 170:
  
 Можно передавать несколько команд, для этого нужно разделить их точкой с запятой или две опции -e.\\ Можно передавать несколько команд, для этого нужно разделить их точкой с запятой или две опции -e.\\
 +
 +<details>
 +<summary> :!: Поиск и замена </summary>
 +:!: **Не прпускает символ амперсанд и оба слеша**\\
 +
 +<code bash>
 +  # -i чтобы сохранить в тот же файл
 +sed -i 's/<USER_NAME>/this_uname/g' file
 +
 +</code>
 +</details>
 +
 +
 <details> <details>
 <summary> :!: Примеры </summary> <summary> :!: Примеры </summary>
Строка 165: Строка 228:
   * **a | b** - "либо"   * **a | b** - "либо"
   * **i** - не учитывать регистр   * **i** - не учитывать регистр
-  * ** ** -+  * **\K** - задает условное начало строки от найденного фрагмента
  
  
Строка 257: Строка 320:
   * **-s "symb"** - символ для разделения   * **-s "symb"** - символ для разделения
 </details> </details>
 +
 +
 +<details>
 +<summary>**uniq**</summary>
 +https://losst.pro/komanda-uniq-linux\\
 +
 +</details>
 +
  
linux/overall/views.1684768218.txt.gz · Последнее изменение: 2023/05/22 15:10 — admin