Время от времени возникает необходимость быстро отредактировтаь какой-либой файл.
И само собой разумеется, что для этой работы самыми популярными утилитами командной строки в Linux являются sed и awk — две лучшие программы для обработки текста.
В даной статье вы найдете информацию о том, как добавить какой-либо текст или символ (например запятую) в начало или в конец каждой строки файла с помощью sed и awk.
Также вы узнаете, как превратить несколько строк из файла в одну строку разделенную запятыми.
SED/AWK — Добавить в Начало Строки
Используйте следующие команды, чтобы добавить ПРЕФИКС (какой-то текст или символ) в начало каждой строки ФАЙЛА:
$ awk '{print "ПРЕФИКС"$0}' ФАЙЛ
— или —
$ sed 's/^/ПРЕФИКС/' ФАЙЛ
Дельный Совет: Не будьте занудой! Сделайте ваш Bash скрипты ЦВЕТНЫМ! Пусть он выглядит ВЕЛИКОЛЕПНО! Читать далее →
SED/AWK — Добавить в Конец Строки
Используйте следующие команды, чтобы добавить СУФФИКС (какой-то текст или символ) в конец каждой строки ФАЙЛА:
$ awk '{print $0"СУФФИКС"}' ФАЙЛ
— или —
sed 's/$/СУФФИКС/' ФАЙЛ
SED/AWK — Добавить в Начало и Конец
Используйте следующие команды, чтобы добавить какой-то ПРЕФИКС в начало и какой-то СУФФИКС в конец каждой строки ФАЙЛА:
$ awk '{print "ПРЕФИКС"$0"СУФФИКС"}' ФАЙЛ
— или —
$ sed "s/.*/ПРЕФИКС&СУФФИКС/" ФАЙЛ
Дельный Совет: Вы можете с легкостью удалять символы в начале и в конце строки с помощью команды cut! Читать далее →
Насколько Строк в Одну, Разделенную Запятыми
Допустим у вас есть какой-то файл состоящий из нескольких строк. И вам необходимо превратить эти несколько строк в одну строку, разделенную запятыми. Есть множество способов достичь этого, но я чаще всего использую один из приведенных ниже.
Используйте одну из следующих команд, чтобы добавить по запятой в конце каждой строки файла, кроме последней, а затем превратить эти несколько строк в одну, разделенную запятыми:
$ echo $(awk 'NR > 1{print line", "}{line=$0;}END{print $0" "}' ФАЙЛ)
— или —
$ paste -d, -s ФАЙЛ
Пример:
$ cat file.txt
Я Люблю Bash
Я Люблю Bash
Я Люблю Bash
$ echo $(awk 'NR > 1{print line", "}{line=$0;}END{print $0" "}' file.txt)
Я Люблю Bash, Я Люблю Bash, Я Люблю Bash
$ paste -d, -s file.txt
Я Люблю Bash,Я Люблю Bash,Я Люблю Bash