1

我的文件如下所示:

315
717
461 737
304
440
148 206 264 322 380 438 496
801
495
355
249 989
768
946

我想在一个列文件(一个长的第一列)中打印所有这些列。

如果我尝试

awk '{print $1}'> new_file; awk '{print $2}' >> new_file

中间有空格。如何解决这个问题?

4

4 回答 4

4

也许有点神秘:

awk '1' RS='[[:space:]]+' inputfile

它说“打印每条记录,将任何空格视为记录分隔符”。

于 2012-04-22T19:55:20.297 回答
3

你可以简单地使用类似的东西:

awk '{ for (i=1; i<=NF; i++) print $i }' file

对于每一行,遍历列,并在新行中打印每一列。

于 2012-04-22T17:52:54.807 回答
3

你不需要这么多sed:只需将空格转换为换行符

tr ' ' '\n' < file

tr纯粹是一个过滤器,因此您必须将文件重定向到其中。

于 2012-04-22T21:02:35.543 回答
1

一个perl解决方案:

perl -pe 's/\s+(?=\S)/\n/g' infile

输出:

315
717
461
737
304
440
148
206
264
322
380
438
496
801
495
355
249
989
768
946
于 2012-04-22T21:31:34.890 回答