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

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


linux:overall:views

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:overall:views [2023/03/20 05: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 активных подключений
 +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[@]}"
Строка 56: Строка 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>
  
  
Строка 117: Строка 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>
Строка 162: Строка 228:
   * **a | b** - "либо"   * **a | b** - "либо"
   * **i** - не учитывать регистр   * **i** - не учитывать регистр
-  * ** ** -+  * **\K** - задает условное начало строки от найденного фрагмента
  
  
Строка 198: Строка 264:
 sudo ss -ntlua | grep "8086" | awk '{print $6}' | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort --unique sudo ss -ntlua | grep "8086" | awk '{print $6}' | grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort --unique
 </code> </code>
 +
 +Вывод файла, сортировка, подсчет вхождения, вывод таблицей
 +<code bash>
 +cat list.csv | sort | uniq -c | [column -t |] sort -r
 +</code>
 +
 </details> </details>
  
Строка 209: Строка 281:
   * **column** - вывод в табличном виде   * **column** - вывод в табличном виде
  
-===== cat =====+<details> 
 +<summary>**cat**</summary>
 Для записи в файл можно использовать перенаправление ввода **>>**. Для записи в файл можно использовать перенаправление ввода **>>**.
   * **-n (-b)** - нумеровать строки (только не пустые).   * **-n (-b)** - нумеровать строки (только не пустые).
Строка 215: Строка 288:
   * **-E** - показывать символ $ в конце каждой строки.   * **-E** - показывать символ $ в конце каждой строки.
   * **-T** - отображать символ табуляции.   * **-T** - отображать символ табуляции.
 +</details>
  
  
-===== tail =====+<details> 
 +<summary>**tail**</summary>
   * **-f [--pid]** - авто-обновление [закрыться с процессом].   * **-f [--pid]** - авто-обновление [закрыться с процессом].
   * **-s сек** - частота обновления.   * **-s сек** - частота обновления.
   * **-n** - кол-во строк (10 по умолчанию).   * **-n** - кол-во строк (10 по умолчанию).
 +</details>
  
  
-===== head =====+<details> 
 +<summary>**head**</summary>
   * **-n** - кол-во строк (10 по умолчанию).   * **-n** - кол-во строк (10 по умолчанию).
   * **--lines=[-]NUM** - весь текст, кроме последних NUM строк.   * **--lines=[-]NUM** - весь текст, кроме последних NUM строк.
   * **-z** - символ новой строки.   * **-z** - символ новой строки.
 +</details>
  
  
-===== less ===== +<details> 
-  * **-i (-I)** - игнорировать регистр паттерна+<summary>**less**</summary> 
 +* **-i (-I)** - игнорировать регистр паттерна
   * **-n (-N)** - не выводить (выводить) номера строк   * **-n (-N)** - не выводить (выводить) номера строк
 +</details>
 +  
  
- +<details> 
-===== column =====+<summary>**column**</summary>
 Можно перенаправлять вывод, можно подавать файлы. Гуглятся целый ряд всяких параметров но что то нихрена толком не работает Можно перенаправлять вывод, можно подавать файлы. Гуглятся целый ряд всяких параметров но что то нихрена толком не работает
   * **-t** - для табличной формы   * **-t** - для табличной формы
   * **-s "symb"** - символ для разделения   * **-s "symb"** - символ для разделения
 +</details>
  
 +
 +<details>
 +<summary>**uniq**</summary>
 +https://losst.pro/komanda-uniq-linux\\
 +
 +</details>
  
  
linux/overall/views.1679289055.txt.gz · Последнее изменение: 2023/03/20 05:10 — admin