Как я могу преобразовать неопределенное количество строк в однострочную запись

Разница между set argumentи set -- argumentхарактерна для многих других команд.

Иногда у вас есть аргумент, начинающийся с -, но на самом деле вы не можете его использовать, потому что команда считает, что (, поскольку он начинается с -), на самом деле является параметром команды.

То, что --говорит, фактически :«Достаточно! Все, что следует, даже если оно начинается с -, является фактическим аргументом».

Обычно (в соответствии со страницами руководства )для этой цели одиночный -эквивалентен --.

Пример

Вы можете использовать:

set -- -a -b file1 file2  

для установки $1, $2, $3и $4на -a, -b, file1и file2соответственно. --не сохраняется -, это просто индикатор; без этого,-aи -bбудут интерпретироваться как возможные варианты для самой команды set.

0
02.09.2019, 21:15
2 ответа
$ sed -e :a -e '$!N;s/ *\n+ / /;ta' -e 'P;D' testfile
******************
.WER aaa bbb ccc ddd eee 
******************
.SDF zzz xxx yyy iii kkk lll
******************
.XCV uuu vvv ggg hhh qqq
******************

http://sed.sourceforge.net/sed1line.txtприводит аналогичный пример.

  • :aсоздать метку «а»

  • $!Nдобавить следующую строку (и новую строку )в пространство шаблонов, ЕСЛИ это не последняя строка ($!)

  • s/ *\n+ / /Замените конечные пробелы, новую строку, + и пробел после него одним пробелом

  • taвернуться к маркировке

  • Pраспечатать пространство шаблона. Это приведет к двойному выводу, потому что мы не использовали опцию-n-для sed, так что теперь нам нужно

  • Dудалить лишний вывод.

3
28.01.2020, 02:22

Если вы действительно хотите использовать awk, то, по крайней мере, с GNU awk вы можете сделать что-то вроде

$ gawk -vRS='\n[*]+' -F'[ ]*\n[+][ ]*' '{NF+=0; ORS=RT} 1' file
******************
.WER aaa bbb ccc ddd eee 
******************
.SDF zzz xxx yyy iii kkk lll
******************
.XCV uuu vvv ggg hhh qqq
******************

который просто устанавливает соответствующие разделители записей и полей и принудительно -пересобирает запись с разделителями полей (одиночного пробела )по умолчанию.

0
28.01.2020, 02:22

Теги

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