如何使用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