Как объединить несколько строк вывода в одну строку? [дубликат]



этот вопрос уже есть ответ здесь:




  • Как объединить все строки из файла в bash?

    8 ответов



если я выполню команду cat file | grep pattern, Я получаю много строк вывода. Как вы объединяете все строки в одну строку, эффективно заменяя каждую "n" С "" " (конец с " затем космос)?



cat file | grep pattern | xargs sed s/n/ /g
это не работает на меня.

768   7  

7 ответов:

использовать tr '\n' ' ' перевести все символы новой строки с пробелами:

$ grep pattern file | tr '\n' ' '

Примечание: grep читает файлы cat объединяет файлы. Не надо cat file | grep!

Edit:

tr может обрабатывать только односимвольные переводы. Вы могли бы использовать awk чтобы изменить разделитель выходных записей, например:

$ grep pattern file | awk '{print}' ORS='" '

это бы преобразило:

one
two 
three

to:

one" two" three" 

вывод трубопровода на xargs сцепляет каждую строку вывода в одну строку с пробелами:

grep pattern file | xargs

или любая команда, например. ls | xargs. Ограничение по умолчанию xargs выход ~4096 символов, но может быть увеличен, например. xargs -s 8192.

xargs

в bash Echo без кавычек удалить символы возврата каретки, табуляции и множественные пробелы

echo $(cat file)

это может быть то, что вы хотите

cat file | grep pattern | paste -sd' '

что касается вашего редактирования, я не уверен, что это значит, возможно, это?

cat file | grep pattern | paste -sd'~' | sed -e 's/~/" "/g'

(предполагается, что ~ не происходит file)

вот метод, с помощью ex редактор:

  • Join все линии и print к стандартному выходу:

    $ ex +%j +%p -scq! file
    
  • Join все строки на месте (в файле):

    $ ex +%j -scwq file
    

    Примечание: это будет конкатенация всех строк внутри файла it-self!

вероятно, лучший способ сделать это-использовать инструмент "awk", который будет генерировать вывод в одну строку

$ awk ' /pattern/ {print}' ORS=' ' /path/to/file

Он объединит все строки в одну с разделителем пробелов

это пример, который производит вывод, разделенный запятыми. Вы можете заменить запятую любым разделителем, который вам нужен.

cat <<EOD | xargs | sed 's/ /,/g'
> 1
> 2
> 3
> 4
> 5
> EOD

выдает:

1,2,3,4,5

Comments

    Ничего не найдено.