每行打印一个单词

时间:2016-06-15 17:29:44

标签: unix awk sed ksh

我几乎尝试了所有东西,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
 .
 .
 .

因此,每个字符串将在变量中打印出来。

6 个答案:

答案 0 :(得分:7)

使用xargs

的另一个简单的班轮
xargs -n 1 <file

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

-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

答案 1 :(得分:3)

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

答案 2 :(得分:3)

另一个awk

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

答案 3 :(得分:2)

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

使用tr

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

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

使用sed

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

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

答案 4 :(得分:2)

从文件中获取printf的参数:

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

答案 5 :(得分:2)

只有一个cattr可以轻松完成此操作

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

编辑:

更好的一个,没有UUOC

tr ' ' "\n" < input.txt