如何使用sed或awk将单词排列在一行中?

如何使用sed或awk将单词排列在一行中?,awk,sed,Awk,Sed,我的文件内容: Google Facebook yahoo cisco juniper oracle firetide attack 我想将上面的单词(列)转换成一行,如下所示: Google Facebook yahoo cisco juniper oracle firetide attack 注意:每个单词之间应该有一个空格 请建议我使用sed或awk实现此目的的方法 提前感谢。使用awk $ awk 'ORS=FS' inputFile Google Facebook yahoo ci

我的文件内容:

Google
Facebook
yahoo
cisco
juniper
oracle
firetide
attack
我想将上面的单词(列)转换成一行,如下所示:

Google Facebook yahoo cisco juniper oracle firetide attack
注意:每个单词之间应该有一个空格

请建议我使用sed或awk实现此目的的方法

提前感谢。

使用awk

$ awk 'ORS=FS' inputFile
Google Facebook yahoo cisco juniper oracle firetide attack 

另一个变化是

$ awk 1 ORS=' ' input
Google Facebook yahoo cisco juniper oracle firetide attack

使用
tr

tr '\n' ' ' < File
tr'\n'
带awk:

awk '{printf "%s ", $0}' file
使用外壳 如果允许使用外壳解决方案,请尝试:

$ echo $(cat inputfile) 
Google Facebook yahoo cisco juniper oracle firetide attack
以上内容应适用于任何POSIX shell。使用
bash

$ echo $(<inputfile) 
Google Facebook yahoo cisco juniper oracle firetide attack
上面的代码在(
:a;N;$!ba
)中读取整个文件,然后用空格(
s/\N//g
)替换所有换行符

如果输入文件在行首和行尾可能包含额外的空格,我们可以删除它们:

$ sed ':a;N;$!ba; s/[[:space:]]*\n[[:space:]]*/ /g' inputfile
Google Facebook yahoo cisco juniper oracle firetide attack
  • 用一个简单的空格替换起始/结束空格和新行(这样所有起始空格都将被删除)

    • 这里是另一种方法:

      xargs <file
      Google Facebook yahoo cisco juniper oracle firetide attack
      

      xargs@Kumar You are wlecome:)@Jotne但它不会改变记录分隔符,它仍然是
      \n
      一个小的变化
      awk 1 ORS=''inputfile
      @Jotne,更短:D您介意我添加到我的答案中吗?@Jotne Done!!谢谢:)可能的副本
      sed -n '1h;1!H;${x;s/ *\n */ /gp;}' YourFile
      
      xargs <file
      Google Facebook yahoo cisco juniper oracle firetide attack