SED/AWK — Добавить в Начало или в Конец Строки

Время от времени возникает необходимость быстро отредактировтаь какой-либой файл.

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