【问题标题】:Print one word per line每行打印一个字
【发布时间】:2016-10-16 22:58:35
【问题描述】:

我几乎尝试了所有方法,sed、awk、tr,但是...

我正在尝试输出包含此内容的文件

 2079 May 19 13:37 temp.sh
 1024 May 23 17:09 mirrad
 478 May 26 14:48 unzip.sh

喜欢这个

 2079
 May
 19
 13:37
 .
 .
 .

所以每个字符串将在一个变量中一次打印出一个。

【问题讨论】:

  • 发布到目前为止您尝试过的内容?
  • 问题结尾处的in a variable 是什么意思?
  • 特别感谢大家的所有回答。我收到的所有答案都已更正且易于实施。再次感谢您

标签: unix awk sed ksh


【解决方案1】:

我会继续回答这个问题,因为我用错误的重复问题标记了它。

使用tr:

echo "Mary had a little lamb" | tr ' ' '\n'

在上面的命令中,您将' ' 替换为换行符'\n'

使用sed

echo "Mary had a little lamb" | sed 's/ /\n/g'

如果您想将多个空格转换为单个换行符,请改用s/ */\n/g。那是/,后跟两个空格,然后是*

【讨论】:

  • 除了感谢干净高效无话可说
【解决方案2】:

使用 awk

awk 'BEGIN{RS=" "} 1' file

输出

2079
May
19
13:37
temp.sh
1024
May
23
17:09
mirrad
478
May
26
14:48
unzip.sh

【讨论】:

  • 特别感谢大家提供所有这些答案。我收到的所有答案都已更正且易于实施。再次感谢您
  • 这可能会在输出中留下不需要的空白。
【解决方案3】:

从文件中获取printf 的参数:

printf "%s\n" $(<file)

【讨论】:

  • 除了感谢干净高效无话可说
【解决方案4】:

另一个简单的使用xargs的衬线

xargs -n 1 <file

来自man页面的-n解释:-

-n max-args, --max-args=max-args
       Use at most max-args arguments per command line.  Fewer than
       max-args arguments will be used if the size (see the -s
       option) is exceeded, unless the -x option is given, in which
       case xargs will exit.

将产生输出为

#!/bin/bash
$ xargs -n1 <tmp.txt
2079
May
19
13:37
temp.sh
1024
May
23
17:09
mirrad

-n 的值为 2 它给出

#!/bin/bash     
$ xargs -n2 <tmp.txt
2079 May
19 13:37
temp.sh 1024
May 23
17:09 mirrad

注意

xargs 的建议仅适用于 OP 中所示的简单输入。因此,该解决方案不适用于大文件(需要高内存处理)或包含带引号的行的文件。请参阅涉及awk 的其他答案。

【讨论】:

  • 除了感谢干净高效无话可说
  • 这对于大文件来说非常慢,下面的 (m)awk 解决方案要快得多。
  • 如果文件包含不匹配的单引号,则会失败。
  • @Kyle:我现在在最后做了一个免责声明。 OP 的输入没有提到显式的大文件或包含引号的文件。也许您现在可以恢复反对票
【解决方案5】:

只需cattr 即可轻松完成此操作

cat input.txt|tr ' ' "\n"

编辑:

更好的,没有 UUOC

tr ' ' "\n" < input.txt

【讨论】:

  • 而你甚至不需要也不想要这只猫:tr ' ' '\n' &lt; input.txt。谷歌 UUOC。
  • @EdMorton - 感谢您提供信息。是的连接(cat) 什么都没有是浪费时间。刚刚粘贴了谷歌的摘录:)
  • 除了感谢干净高效无话可说
  • 如果您认为此答案已正确解决或回答了您的问题。请单击答案旁边的复选标记将其标记为已接受。见:How does accepting an answer work?了解更多信息
【解决方案6】:

另一个awk

$ awk -v OFS='\n' '{$1=$1}1' file

【讨论】:

  • 除了感谢干净高效无话可说
  • 似乎匹配 'xargs -n 1' 输出,但没有缓慢和单引号问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 2015-04-17
  • 2021-12-05
  • 2015-01-04
  • 1970-01-01
  • 2021-06-30
  • 2012-09-11
相关资源
最近更新 更多