On the road again

В этой статье я буду выкладывать полезные команды и скрипты для *nix систем.

Работа с текстом

find ./ -name "*.txt" -mtime +1 -exec rm {} \; - удаление, например, текстовых файлов по дате

wc /filename -подсчет числа строк, слов и знаков в заданном файле. Ключи - l (lines), - w (words) - c (characters) могут указать явно объекты счета

cat state.xml | grep App | grep -v /App | sort | uniq | cut -c14-50 -обработать файл, выбрать строки с App, убрать строки с /App, отсортировать полученные строки, удалить дубликаты, обрезать первые 14 символов с каждой строки.

cat /filename | grep "^test" - найти в указанном файле все строки, начинающиеся со слова test

cat /filename | grep "test$" - найти в указанном файле все строки, заканчивающиеся на слово test

cat /filename | grep "d..." - найти в указанном файле все строки, в которых содержатся слова из 4х букв, начинающихся на d

cat /filename | grep "^ [asdfg]" - найти в указанном файле строки, начинающиеся с букв asdfg

cat /filename | grep "[^Dd][a-z]{3}" - найти в указанном файле строки, которые начинаятся со слова, в котором первая буква D или d, остальные три буквы - малые

$ grep -v "^ $" file >> newfile - уничтожить в заданном файле все пустые строки и записать результат в новый файл

$ cat /filename | grep "." >> newfile - уничтожить в заданном файле все пустые строки и записать результат в новый файл

$ awk '{str1=$1;str2=$2; getline <"./test2"; print $2" \t"str1" \t"str2> "./test3"}' ./test1 - данная команда добавляет столбец из файла test2 первым в файл test1 и записывает результат в test3

sed -e 's/word1/word2/g' inputfile >> outputfile - найти слово word1 в строках файла inputfile, заменить на слово word2 и записать в файл outputfile. g- глобально для всего файла

sed -e 's/us//g' filename | grep '.' - удалить все строки в файле, подпадающие под REGEXP, в получившемся результате удалить все пустые строки

sed 's/[ \t]*$//' - удалить пробелы и табуляции в конце каждой строки

sed 's/.*error#\(.*\)$/\1/g' - удалить часть строки до "error#"

find /path/to/directory -exec grep -c "abc" {} \; - поиск текста в файлах директории рекурсивно

 

Список файлов, открытых процессом:

lsof -p <pid>
Команда, позволяющая удалить весь список "ppp" процессов:

kill -9 `ps ax | awk '/ppp/ { print $1 }'`

 

Работа с датами

date -d @1281525267 - преобразование даты из формата Unix TIMESTAMP (EPOCH) в обычную дату

date -f /filename - преобразование даты, для каждой строки из указанного файла. Для преобразования из unix timestamp нужно чтобы в файле дата была записана в формате @timestamp

date +%s - преобразовать текущую дату в Unix timestamp

 

SCP

scp -r user@host:/directory/SourceFolder TargetFolder - Копируем SourceFolder с удаленного хоста внутрь локального TargetFolder (На локальном хосте получится что SourceFolder будет находиться внутри TargetFolder

scp -P port user@host:/directory/SourceFile /directory/TargetFile - Если ssh слушается на другом порту, то тогда необходимо указать порт

scp SourceFile user@host:/directory/TargetFile - Копируем локальный SourceFile на удалённый хост

scp user@host:/directory/SourceFile TargetFile - Копируем SourceFile с удаленного хоста

СКРИПТЫ

Скрипт для проверки существования файла

A=$(find . -name "$FILENAME" -exec echo -n "0" \; )

if [ $A -ne 0 ]
then
return 1
fi

 

Add comment