Напишите bash-скрипт, который принимает данные из канала

Я всегда печатаю такие вещи:

cat some_list_of_elements.txt | awk '{print "\047"$1"\047"}' | paste -d, -s

Он берет список элементов из файла, заключает каждый в кавычки и объединяет их в список через запятую.

Вместо того, чтобы печатать все эти вещи, я хотел бы сделать что-то вроде этого:

cat some_list_of_elements.txt | csl

Как может csl быть реализован в Bash? Есть ли способ сделать это как псевдоним?

2 ответа

Решение

Это сработало для меня:

alias csl='awk '\''{print "\047"$1"\047"}'\'' | paste -d, -s'

Спасибо @roadmr за указание в правильном направлении.

alias csl="awk '{print "\047"$1"\047"}' | paste -d, -s"

тогда просто cat whatever | csl

Кажется, это работает, но на самом деле это не так, по причинам, указанным в комментариях ниже. Смотрите их для актуальных, хороших рабочих решений:)

Кстати, это не относится к Ubuntu, поэтому не стесняйтесь размещать сообщения на stackoverflow.com, если мой ответ не работает для вас.

Другие вопросы по тегам