Подтвердить что ты не робот

Объединение эха и кота в Unix

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

Если/tmp/файл выглядит следующим образом:

this is a test

Я хочу запустить это:

echo "PREPENDED STRING"
cat /tmp/file | sed 's/test/test2/g' > /tmp/result 

чтобы результат/tmp/выглядел следующим образом:

PREPENDED STRINGthis is a test2

Спасибо.

4b9b3361

Ответ 1

Это должно работать:

echo "PREPENDED STRING" | cat - /tmp/file | sed 's/test/test2/g' > /tmp/result 

Ответ 2

Try:

(printf "%s" "PREPENDED STRING"; sed 's/test/test2/g' /tmp/file) >/tmp/result

Скобки запускают команды внутри подоболочки, так что вывод выглядит как один поток для перенаправления >/tmp/result.

Ответ 3

Или просто используйте только sed

  sed -e 's/test/test2/g
s/^/PREPEND STRING/' /tmp/file > /tmp/result

Ответ 4

Или также:

{ echo "PREPENDED STRING" ; cat /tmp/file | sed 's/test/test2/g' } > /tmp/result

Ответ 5

Другая опция: предполагая, что добавленная строка должна появляться только один раз, а не для каждой строки:

gawk 'BEGIN {printf("%s","PREPEND STRING")} {gsub(/test/, "&2")} 1' in > out

Ответ 6

Если это когда-либо отправлено по электронной почте, не забудьте использовать строки CRLF, например:

echo -e 'To: [email protected]\r' | cat - body-of-message \
| sed 's/test/test2/g' | sendmail -t

Обратите внимание на -e -flag и \r внутри строки.

Настройка To: этот путь в цикле дает вам самую простую в мире массовую рассылку.