各位大神,有一个问题我始终搞不懂:
我有一个文本文件data.cat:
1 348.840969 -41.107056
2 348.802748 -41.954959
3 348.747167 -43.298839
4 348.776328 -41.787413
5 348.739272 -42.733288
6 348.706704 -43.725525
7 348.717778 -43.210221
8 348.761941 -41.691888
10 348.737033 -42.304654
想把每一行的内容都单独写到该行首个数字命名的文件中: 例如 第三行 写到 3.txt中
写了个循环脚本:
for (( i=1 ; i<=10 ; i=i+1 ))
do
cat data.cat | awk 'NR==i { print $1 "\t" $2 "\t" $3 > "$i.txt" }'
done
但是根本就没有东西写入!请各位看看问题出在哪儿 ?
关于awk的用法 。。
-
- 帖子: 91
- 注册时间: 2013-01-23 14:27
- 系统: ubuntu 12.04
-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: 关于awk的用法 。。
以下假设第一列内容没有重复
如果行不多:
如果行很多:
上两条命令都是dry coding,没测试。但应该没问题
你的问题:请参考
1, cat多余
2, awk自己分内的事,不用for啊什么的,反而添乱。你这样每行就起两个进程
3, 输出是空,因为你把$1放引号里了。
4, 即使你改对了,如果行数特多,你会收到too many files opened 这类似的错误。
如果行不多:
代码: 全选
awk '{print > $1".txt"}' data.txt
代码: 全选
awk '{print >> $1".txt"; close($1".txt")}' data.txt
你的问题:请参考
1, cat多余
2, awk自己分内的事,不用for啊什么的,反而添乱。你这样每行就起两个进程
3, 输出是空,因为你把$1放引号里了。
4, 即使你改对了,如果行数特多,你会收到too many files opened 这类似的错误。
---
regards,
Kent
regards,
Kent
-
- 帖子: 91
- 注册时间: 2013-01-23 14:27
- 系统: ubuntu 12.04
-
- 帖子: 91
- 注册时间: 2013-01-23 14:27
- 系统: ubuntu 12.04
Re: 关于awk的用法 。。
谢谢了 !