分页: 1 / 1
文件读取
发表于 : 2016-12-06 8:55
由 wnyh
我有一个文件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 貌似不管用
Re: 文件读取
发表于 : 2016-12-06 16:11
由 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
Re: 文件读取
发表于 : 2016-12-06 16:32
由 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
Re: 文件读取
发表于 : 2016-12-07 14:29
由 wnyh
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
您这方法管用,非常感谢了。
Re: 文件读取
发表于 : 2016-12-07 14:30
由 wnyh
恩,明白您的意思了,
我不懂时只考虑在网上搜索答案,没有想到要去看看awk 或gawk 的语法,谢谢