Bash :: добавить текст к выводу файла


0

Я очень новичок в Shell Scripting, так что это может быть очень простое решение, но я изо всех сил пытаюсь заставить его работать. У меня есть файл с этим содержанием:

example1.eu 
example2.eu 
example3.eu

То, что я пытаюсь сделать, это выводить содержимое файла в одну строку форматирования примерно так.

test.example1.eu, test.example2.eu, test.example3.eu

и так далее.

У меня есть это в моем сценарии, но я не могу понять, как добавить «тест» для первой записи в файле.

cat file | xargs | sed -e 's/ /,test./g'

example1.eu, test.example2.eu, test.example3.eu

Пожалуйста, посоветуйте Спасибо

Ответы:


2

Вы можете использовать «вставить» для установки разделителя. Например

cat file | sed -e 's/^/test./' | paste -sd ','

Изменить: Улучшенная версия (комментарий tripleee)

sed file -e 's/^/test./' | paste -sd ','

Это catбесполезно. sedумеет читать fileсамостоятельно или использовать перенаправление.
tripleee

0

Это можно сделать с помощью awkкоманды:

 $ awk '{a=a"test."$0","}END{sub(/,$/,"",a);print a}' file
 test.example1.eu,test.example2.eu,test.example3.eu

Это создает строковую переменную aи добавляет каждую строку и запятую к строке. Затем он заменяет последнюю запятую ничем и печатает строку.

Предыдущий ответ с запятой:

 $ awk 'BEGIN{ORS=","}{print "test."$0}' file
test.example1.eu,test.example2.eu,test.example3.eu,

Это устанавливает разделитель выходных записей на запятую, а затем печатает каждую строку с test.добавлением к ней строки.


1
Завершающая запятая - немного бородавка. Его не сложно удалить, но его также не будет слишком сложно избежать. Обычный шаблон{ printf "%stest.%s", sep, $0; sep="," }
tripleee

Я обновил ответ с помощью новой команды awk, которая удаляет завершающую запятую.
ewatt
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.