awk将多列文件打印成单列

时间:2012-04-22 17:42:26

标签: awk

我的文件看起来像这样:

  

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 个答案:

答案 0 :(得分:4)

也许有点神秘:

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

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

答案 1 :(得分:3)

您可以使用以下内容:

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

对于每一行,迭代列,并在新行中打印每列。

答案 2 :(得分:3)

为此,您不需要sed:只需将空格转换为换行符

tr ' ' '\n' < file

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

答案 3 :(得分: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