回答
单程。输出文件将命名为fileX,其中X为每列编号。
假设INFILE与内容:
0.0:2000.00:2000.04:2001.02
0.1:2002.00:2000.05:2003.02
0.2:2003.00:2002.04:2004.02
0.3:2001.00:2000.05:2000.03
0.3:2001.00:2000.04:2001.02
0.2:2001.00:2002.04:2000.02
执行此命令awk
:
awk '
BEGIN {
FS = ":";
}
{
for (i = 1; i <= NF; i++) {
print $i > "file" i;
}
}
' infile
检查输出文件:
head file[1234]
有了结果如下:
==> file1 <==
0.0
0.1
0.2
0.3
0.3
0.2
==> file2 <==
2000.00
2002.00
2003.00
2001.00
2001.00
2001.00
==> file3 <==
2000.04
2000.05
2002.04
2000.05
2000.04
2002.04
==> file4 <==
2001.02
2003.02
2004.02
2000.03
2001.02
2000.02
您应该使用-F:
标志将字段分隔符设置为:
。
您应该使用print
与> file
来获得输出到您想要的文件。
awk -F: '{ for (i = 1; i <= NF; i++) { file = "file." i; print $i > file; } }' input
(awk
Mac OS X上10.7.4不允许的表达式作为文件名; gawk
并示出该解决方案将在两个工作)
[回答为作业给予对抗一个(现在取消 - 谢谢你)倒票,这是IMNSHO无偿错误!]
什么:
cat filename|cut -d ':' -f1 > a.txt
然后你就可以写为-f2第二场并把它放在b.txt。
你可以做到这一点(使用'cut'4次);它涉及4个字段的文件传递,如果文件存在并且很小,这并不重要,但如果没有文件(例如,它是在管道中生成的结果),则会变成讨厌的文件,或者如果文件很大(对于大的合适的定义,可能以兆字节的倍数来衡量)。您还赢得了[UUOC](http://www.catb.org/jargon/html/U/UUOC.html)奖。 – 2012-08-12 19:25:20
'猫'没用。 http://partmaps.org/era/unix/award.html – tripleee 2012-08-12 19:28:30
是的,我明白了!当然,如果它不是一个文件,而是像一串数据一样,你不能使用它。但这不是问题。对于非常大的文件你是对的,这是浪费时间。 Ps:真是一个有趣的奖项! – 2012-08-12 19:33:44
- 1. AWK文本处理CVS文件
- 2. Linux文本文件操作与SED/AWK
- 3. Linux删除文件批处理脚本
- 4. 处理与AWK一个文本文件,sed和grep的
- 5. awk的多个文件的处理
- 6. 处理大文件时的AWK性能
- 7. 如何使用awk处理文本?
- 8. 简化文本处理管线与AWK
- 9. AWK/SED处理文本文件,使用Feed文件创建一个CSV文件
- 10. Awk脚本合并Linux中的文本文件中的2列
- 11. 使用awk整理文本文件
- 12. 连接文件awk/linux
- 13. 使用awk处理多个文件
- 14. awk中处理三个文件
- 15. 使用awk处理rar文件
- 16. 从文本文件中计算AWK/Linux脚本
- 17. 处理文本文件
- 18. 深文本文件处理
- 19. Windows和Linux文本文件处理故障
- 20. awk shell脚本用双引号处理csv文件
- 21. 在awk文件比较中处理空文件
- 22. AWK脚本处理一个文件并读取另一个文件
- 23. Linux的红hat5.4 + AWK文件操作
- 24. Perl脚本来处理文本文件
- 25. 批处理脚本来处理文件
- 26. 使用Linux处理places.sqlite文件
- 27. Linux shell到windows批处理文件
- 28. 批处理文件从Windows到Linux
- 29. Matlab中的文本文件处理
- 30. Visual Basic中的文本文件处理
不错,但是11行脚本的脚本有点过分。 – 2012-08-12 19:31:20