分页: 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
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 的语法,谢谢