我需要将文本文件与几行连接起来。这是我的情况:
QStackedLayout
依旧......
我需要这样的输出:
USER abc
PASS 123
USER efg
PASS 456
USER hil
PASS 789
我尝试了以下解决方案:
USER abc PASS 123
USER efg PASS 456
USER hil PASS 789
我收到的输出是:
awk 'NR % 2 == 1 { o=$0 ; next } { print o "<sep>" $0 } END { if ( NR % 2 == 1 ) { print o } }' INPUTFILE
sed -rn 'N;s/\n/ /;p' yourFile
cat file | paste -d' ' - -
USER abc
_PASS 123
USER efg
_PASS 456
是一个简单的空间。
答案 0 :(得分:0)
简单的sed:
sed 'N;s/\n/ /' file
N
将下一行附加到模式空间,s/\n/ /
用空格替换换行符。
请注意,如果换行符序列不同,则必须将\n
更改为正确的序列:Windows文件为\r\n
,旧Mac文件格式为\r
...
答案 1 :(得分:0)
cat file | paste -d' ' - -
应该有效:
$ cat /tmp/t.txt
USER abc
PASS 123
USER efg
PASS 456
USER hil
PASS 789
$ cat /tmp/t.txt | paste -d' ' - -
USER abc PASS 123
USER efg PASS 456
USER hil PASS 789
如果没有,请尝试在您的文件上运行dos2unix
以确保其具有正确的行结尾。
答案 2 :(得分:0)
带粘贴:
paste -sd' \n \n' filename
答案 3 :(得分:0)
只需使用awk:
$ awk '{printf "%s%s", $0, (NR%2 ? OFS : ORS)}' file
USER abc PASS 123
USER efg PASS 456
USER hil PASS 789
$ awk '{printf "%s%s", $0, (NR%3 ? OFS : ORS)}' file
USER abc PASS 123 USER efg
PASS 456 USER hil PASS 789
$ awk '{printf "%s%s", $0, (NR%6 ? OFS : ORS)}' file
USER abc PASS 123 USER efg PASS 456 USER hil PASS 789
注意你如何简单地将数字从“2”更改为你想要打印的任何数字,但要连接多少行?尝试使用任何其他发布的解决方案。