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

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

  1. You forgot -i in your sed command.

  2. So it doesn’t actually save this in the file for me…?
    sudo awk ‘{print «/library/music/»$0}’ go.m3u
    responds with:
    /library/music/(( Singles ))/The departed Soundtrack- Dropkick Murphys — I’m Shipping Up To Boston.mp3
    but cat go.m3u comes back with
    (( Singles ))/The departed Soundtrack- Dropkick Murphys — I’m Shipping Up To Boston.mp3

  3. Nothing like this goes without saying or is taken for granted or even known at all by people who haven’t learned it yet, which is most people.

  4. Thank you for all the info. However, I need to add (‘ preffix and ‘) as suffix. I guess you can understand the problem with it. Since bash command has ‘ involved, it is not happening. Any hints?

  5. @Rahul, had the same issue. For sed, if you add the flag -i it should solve the issue.

  6. I need to add a » (double quote) at the beginning and end of each line in the file.
    When I do the following
    sed -i ‘s/.*/»/’ $OUTDIR/$OUTFILE it removes everything on the line and I just get a double quote on each line (just one and nothing else).

    Any suggestions?

    1. Lock at the right synthax:
      sed «s/.*/PREFIX&SUFFIX/» FILE
      You forgot «&SUFFIX»
      This should work:
      sed -i ‘s/.*/\»&\»/’ $OUTDIR/$OUTFILE
      At all:
      Special characters like \ or » must be escaped with a backslash:
      \\ or \»

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.