У меня есть файл следующего вида:
1
22
1
4
$3
3
5556
$33
$233
$1
5
Я хочу переместить все строки, начинающиеся с $, на предыдущую строку, заменив символы новой строки пробелом. Мой результат должен выглядеть примерно так:
1
22
1
4 $3
3
5556 $33 $233 $1
5
Как я могу сделать это с помощью sed, grep или awk?
Попробуйте следующее:
awk 'BEGIN {ORS = ""} {print}' файл | sed 's / \ (\) \ ([0-9] \) / \ n \ 2 / g'
awk
изменяет столбец на строку, устанавливая разделитель выходных полей на пробел, а sed
находит шаблон пробел + число
и заменяет его шаблоном новой строки + число
.
$ vi file
:g/^\$/-1j
:x
Т.е. выполните однострочное : присоединитесь к
в строках, предшествующих строкам со знаком доллара, затем сохраните и выйдите.
Похожий вопрос размещен здесь: Команда SED для форматирования текстового файла
Как следует из комментария Стефана, решение вашего вопроса с помощью sed
будет следующим:
sed -e :a -e '$!N;s/\n\$/ $/;ta' -e 'P;D' filename
Это очень просто, нужно:
В этом -вкладыше файл называется "file":
# xxd -ps file|tr -d "\n"|sed s/0a24/2024/g|xxd -r -ps
1
22
1
4 $3
3
5556 $33 $233 $1
5