“Замените новую линию, используя Sed Linux Bash” Ответ

Замените новую линию, используя Sed Linux Bash

sed ':a;N;$!ba;s/\n/ /g' file

:a create a label 'a'
N append the next line to the pattern space
$! if not the last line, ba branch (go to) label 'a'
s substitute, /\n/ regex for new line, / / by a space, /g global match (as many times as it can)
DreamCoder

Замените новую линию, используя Sed Linux Bash

# sed is intended to be used on line-based input. Although it can do what you need.
#A better option here is to use the tr command as follows:
tr '\n' ' ' < input_filename

#or remove the newline characters entirely:
tr -d '\n' < input.txt > output.txt

#or if you have the GNU version (with its long options)
tr --delete '\n' < input.txt > output.txt
DreamCoder

Замените новую линию, используя Sed Linux Bash

#All alternatives, unlike sed will not need to reach the last line to begin the process

#with bash, slow
while read line; do printf "%s" "$line "; done < file

#with perl, sed-like speed
perl -p -e 's/\n/ /' file

#with tr, faster than sed, can replace by one character only
tr '\n' ' ' < file

#with paste, tr-like speed, can replace by one character only
paste -s -d ' ' file

#with awk, tr-like speed
awk 1 ORS=' ' file

#Other alternative like "echo $(< file)" is slow, works only on small files and needs to process the whole file to begin the process.
DreamCoder

Замените новую линию, используя Sed Linux Bash

$ echo 'foo
bar
baz

foo2
bar2
baz2' \
| tr '\n' '\000' \
| sed 's:\x00\x00.*:\n:g' \
| tr '\000' '\n'
DreamCoder

Ответы похожие на “Замените новую линию, используя Sed Linux Bash”

Вопросы похожие на “Замените новую линию, используя Sed Linux Bash”

Больше похожих ответов на “Замените новую линию, используя Sed Linux Bash” по Shell/Bash

Смотреть популярные ответы по языку

Смотреть другие языки программирования