Добавьте префикс и суффикс к каждой строке в файле .txt

Вопрос или проблема

Я пытаюсь добавить текст в начало и конец каждой строки в .txt файле.

Я хочу добавить в начало: I am a

Я хочу добавить в конец: 128... [}

к каждой строке.

Внутри a.txt:

fruit, like
bike, like
dino, like

После выполнения следующей команды:

$ cat a.txt|sed 'I am a ',' 128... [}'

она не работает так, как я хочу. Я действительно хочу, чтобы она выдавалась следующим образом:

I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}

Простой подход с sed:

sed 's/^/I am a /; s/$/ 128... [}/' file.txt
  • ^ – обозначает начало строки/строки
  • $ – обозначает конец строки/строки

Вывод:

I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}

Альтернативно, с помощью Awk вы можете сделать следующее:

awk '{ print "I am a", $0, "128... [}" }' file.txt

sed 's/.*/PREFIX&SUFFIX/' infile

подойдет, если PREFIX и SUFFIX не содержат специальных символов.


\&/ (обратная косая черта, амперсанд и разделитель) являются специальными, когда находятся в правой части подстановки s. Специальное значение этих символов можно подавить, экранировав их (предшествуя им обратной косой чертой), например, чтобы добавить в начало A//BC и в конец XY\Z&&, нужно выполнить:

sed 's/.*/A\/\/BC&XY\\Z\&\&/' infile

Perl:

$ perl -lne 'print "I am a $_ 128... [}"' file 
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}

Еще Perl:

$ perl -pe 's/^/I am a /; s/$/ 128... [}/' file 
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}

Еще немного Perl:

$ perl -lpe '$_="I am a $_ 128... [}"' file 
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}

Для всех этих случаев вы можете использовать -i, чтобы внести изменения в исходный файл:

$ perl -i -lne 'print "I am a $_ 128... [}"' file 
$ perl -i -pe 's/^/I am a /; s/$/ 128... [}/' file 
$ perl -i -lpe '$_="I am a $_ 128... [}"' file 

Альтернативный sed

sed -e 's/^\(.*\)$/I am a \1 128 [{/

Он ищет все .* между началом ^ и концом строки $, и помещает это в группу \( \). Затем он заменяет его префиксом, (первой) группой \1 и суффиксом.

Используйте этот инструмент, чтобы убедиться, что результат подходит

https://textlab.tools/add-prefix

.

Ответ или решение

Теория

При обработке текстовых файлов довольно часто возникает необходимость добавлять префикс и суффикс к каждой строке. Это может понадобиться для маркировки, изменения формата или подготовки данных для последующей обработки. Основные инструменты для работы с текстом в Unix-подобных системах включают утилиты sed, awk и perl. Эти инструменты позволяют выполнять сложные текстовые преобразования, используя регулярные выражения и шаблоны.

Пример

Рассмотрим задачу добавления префикса I am a и суффикса 128... [} ко всем строкам в файле a.txt, содержащем следующие строки:

fruit, like
bike, like
dino, like

Ожидаемый результат после обработки:

I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}

Применение

Использование sed

Утилита sed, или потоковый редактор, позволяет редактировать файл, не изменяя сам файл. Чтобы добавить префикс и суффикс к каждой строке с помощью sed, воспользуйтесь следующей командой:

sed 's/^/I am a /; s/$/ 128... [}/' a.txt
  • ^ обозначает начало строки, и I am a добавляется перед содержимым;
  • $ обозначает конец строки, и 128... [} добавляется после содержимого.

Использование awk

Awk — это мощный инструмент для обработки и анализа текстовых данных. В следующем примере Awk используется для достижения той же цели:

awk '{ print "I am a", $0, "128... [}" }' a.txt
  • $0 ссылается на всю текущую строку, которая выводится вместе с префиксом и суффиксом.

Использование perl

Perl может использоваться как для быстрой обработки текста в командной строке, так и для более сложных сценариев. Примеры использования Perl:

  • С использованием замены начала и конца строки:
    perl -pe 's/^/I am a /; s/$/ 128... [}/' a.txt
  • С использованием переменных для создания новой строки:
    perl -lpe '$_="I am a $_ 128... [}"' a.txt

Вывод

Каждое из вышеописанных решений подходит для выполнения задачи добавления префикса и суффикса к строкам в текстовом файле. Выбор конкретного инструмента зависит от ваших предпочтений и возможностей системы. Важно помнить о возможности использования ключа -i в Perl для изменения оригинального файла на месте, что может быть полезно в некоторых ситуациях.

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

Капча загружается...