В этой статье я буду выкладывать полезные команды и скрипты для *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