bash работа с текстом

Bash - язык программирования, большинство скриптов в ОС Unix написаны с применением именно этого языка. Любой из них начинается строкой:

#!/bin/bash

  • GREP

поиск без учета регистра слова

grep -i -w vivek /etc/passwd

поиск слова vivek или raj

grep -E -i -w 'vivek|raj' /etc/passwd

ищем строки которые начинаются со слова vivek

grep ^vivek /etc/passwd

искать строки которые начитаются только с vivek (и не показывать vivek1 vivek2 vivekgite)

grep -w ^vivek /etc/passwd

Поиск строки заканчивающейся на foo:

grep 'foo$' filename

Поиск строки содержащей только foo

grep '^foo$' filename

А можем поискать пустые строки в файле

grep '^$' filename

Так же при использовании Grep можно использовать такие выражения

[:alnum:] - посик буквенно-цифровых символов.
[:alpha:] - буквенных символов
[:blank:] - space и tab.
[:digit:] - цифры: '0 1 2 3 4 5 6 7 8 9'.
[:lower:] - прописные буквы: 'a b c d e f g h i j k l m n o p q r s t u v w x y z'.
[:space:] - пустые символы: tab, newline, vertical tab, form feed, carriage return, and space.
[:upper:] - заглавные буквы: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'.

Поиск всех строк начинающихся с точки и цифры

grep '^\.[0-9]' filename

поиск куска (части) строки

grep '192.168.1.254' /etc/hosts
  • WC

wc -- "word count", счетчик слов в файле или в потоке:

wc -w подсчитывает только слова.

wc -l подсчитывает только строки.

wc -c подсчитывает только символы.

wc -L возвращает длину наибольшей строки.

найти и заменить

cat file|while read i; do echo ${i//ЧТО_МЕНЯЕМ\"\"/НА_ЧТО_МЕНЯЕМ"}; done > newfile; mv newfile file;

sed -i -e 's/ЧТО_МЕНЯЕМ/НА_ЧТО_МЕНЯЕМ/' file

perl -i -p -e 's/ЧТО_МЕНЯЕМ/НА_ЧТО_МЕНЯЕМ/' file

awk '/ЧТО_МЕНЯЕМ/{ print "НА_ЧТО_МЕНЯЕМ"} !/ЧТО_МЕНЯЕМ/{print $0}' file > newfile; mv newfile file....

вставит содержимое из файла /file1 в 21+ строки файла /etc/nginx/nginx.conf

sed -i '20r /file1' /etc/nginx/nginx.conf

запишем в переменную str номер строки файла etc/nginx/nginx.conf которая содержит слово gzip_disable

str=$(grep -n gzip_disable /etc/nginx/nginx.conf | cut -d ':' -f1)