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

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

Если/tmp/file похож на это:

this is a test

Я хочу выполнить это:

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

так, чтобы/tmp/result был похож на это:

PREPENDED STRINGthis is a test2

Спасибо.

31
задан Dan 9 June 2010 в 11:44
поделиться

5 ответов

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

echo "PREPENDED STRING" | cat - /tmp/file | sed 's/test/test2/g' > /tmp/result 
38
ответ дан 27 November 2019 в 22:20
поделиться

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

gawk 'BEGIN {printf("%s","PREPEND STRING")} {gsub(/test/, "&2")} 1' in > out
0
ответ дан 27 November 2019 в 22:20
поделиться

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

  sed -e 's/test/test2/g
s/^/PREPEND STRING/' /tmp/file > /tmp/result
2
ответ дан 27 November 2019 в 22:20
поделиться

Try:

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

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

11
ответ дан 27 November 2019 в 22:20
поделиться

Или также:

{ echo "PREPENDED STRING" ; cat /tmp/file | sed 's/test/test2/g' } > /tmp/result
1
ответ дан 27 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: