文件读取

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
回复
wnyh
帖子: 54
注册时间: 2011-11-24 9:00

文件读取

#1

帖子 wnyh » 2016-12-06 8:55

我有一个文件v01.txt,其中有5列,并且是按照数字顺序。我想把文件分成10个文件。请问如何循环?
for ((i=100;i<111;i++))
do
awk -F, '{if( $5 == $i ) print($1,$2,$3,$4,$5)}' v01.txt >v01_$i.txt
echo $i
done
不知道怎么回事,出来的结果都是空的。即 $5 == $i 貌似不管用
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 文件读取

#2

帖子 cao627 » 2016-12-06 16:11

i 不能直接传进awk

试试:

for ((i=100;i<111;i++))
do
awk -F, -vi=$i '{if( $5 == i ) print($1,$2,$3,$4,$5)}' v01.txt >v01_$i.txt
echo $i
done


不过你的意思似乎可以这样写简写:

代码: 全选

awk -F,  '{if($5>=100 && $5<111)print > "v01_"$5".txt"}' v01.txt
上次由 cao627 在 2016-12-06 16:37,总共编辑 1 次。
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 文件读取

#3

帖子 poloshiao » 2016-12-06 16:32

awk
1. 在 Ubuntu
awk 實際執行 gawk
1-1. sudo ls -al /usr/bin | grep awk
awk -> /etc/alternatives/awk
1-2. sudo ls -al /etc/alternatives | grep awk
awk -> /usr/bin/gawk

2. 參閱 gawk manpage
2-1. man awk -> man gawk
2-2. http://manpages.ubuntu.com/manpages/xen ... posix.html
2-3. man gawk
2-4. http://manpages.ubuntu.com/manpages/xen ... awk.1.html
wnyh
帖子: 54
注册时间: 2011-11-24 9:00

Re: 文件读取

#4

帖子 wnyh » 2016-12-07 14:29

cao627 写了:i 不能直接传进awk

试试:

for ((i=100;i<111;i++))
do
awk -F, -vi=$i '{if( $5 == i ) print($1,$2,$3,$4,$5)}' v01.txt >v01_$i.txt
echo $i
done


不过你的意思似乎可以这样写简写:

代码: 全选

awk -F,  '{if($5>=100 && $5<111)print > "v01_"$5".txt"}' v01.txt


您这方法管用,非常感谢了。
wnyh
帖子: 54
注册时间: 2011-11-24 9:00

Re: 文件读取

#5

帖子 wnyh » 2016-12-07 14:30

poloshiao 写了:
awk
1. 在 Ubuntu
awk 實際執行 gawk
1-1. sudo ls -al /usr/bin | grep awk
awk -> /etc/alternatives/awk
1-2. sudo ls -al /etc/alternatives | grep awk
awk -> /usr/bin/gawk

2. 參閱 gawk manpage
2-1. man awk -> man gawk
2-2. http://manpages.ubuntu.com/manpages/xen ... posix.html
2-3. man gawk
2-4. http://manpages.ubuntu.com/manpages/xen ... awk.1.html
恩,明白您的意思了,
我不懂时只考虑在网上搜索答案,没有想到要去看看awk 或gawk 的语法,谢谢
回复