2

Если у меня есть:

foo  
bar

... и я хотел бы, чтобы awk/sed это:

foo-bar

.. какой синтаксис?

Я пытаюсь использовать System Profiler на OS X 10.6.x:

system_profiler SPMemoryDataType | awk '/Type/ {print $2} /Speed/ {print $2}'

выводить тип скорости (т.е. DDR-1067). Вы еще не выяснили, как это сделать с помощью print или printf , вместо этого можете попробовать просто grep ..

2 ответа2

5

С tr:

tr '\n' '-'

Этого будет достаточно? Это заменяет каждую новую строку запятой.


С помощью sed:

Более симпатичное решение с использованием sed:

sed -e N -e 's/\n/-/'

N добавляет новую строку в пространство шаблона в соответствии с man-страницей:

[2addr]N

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


С bash

На самом деле, bash может делать то, что может делать tr . Просто для полноты:

while read l; do echo -n "$l-"; done

Вот аналогичный вопрос о переполнении стека: SED: Как я могу заменить символ новой строки (\n)?

1
awk 'BEGIN {ORS="-"} {print}'

Присоединяет ваши данные. То, что находится внутри оператора начала, происходит до чтения данных. Здесь мы определяем, что разделитель выходной записи -. Print печатает данные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .