使用cut命令,从文本文件中提取文本列
兴之所至 四月 14th, 2008想了解cut命令的使用方法,可以查看系统帮助,在这里就不对其再作解释了。这里只是列出几个
我用cut解决了的问题例子。
问题一:
有一个文件url.log.bak,内容类似下面这样:
url=”http://1.1.1.1/123.txt
text=”123.txt的说明”
url=”http://1.1.1.1/456.txt
text=”456.txt的说明”
url=”http://1.1.1.1/789.txt
text=”789.txt的说明”
text=”123.txt的说明”
url=”http://1.1.1.1/456.txt
text=”456.txt的说明”
url=”http://1.1.1.1/789.txt
text=”789.txt的说明”
需要把其内容提取出来,按下面的格式保存到url.log:
http://1.1.1.1/123.txt
123.txt的说明
http://1.1.1.1/456.txt
456.txt的说明
http://1.1.1.1/789.txt
789.txt的说明
123.txt的说明
http://1.1.1.1/456.txt
456.txt的说明
http://1.1.1.1/789.txt
789.txt的说明
cut命令:
cut -f2 -d\” url.log.bak >url.log
问题二:
如下所示,一个脚本文件udp-c.pl.bak前面被加了行号等,需要想把每行前面的“<1 ”这些字符
去掉,保存到udp-c.pl文件中。
<1 #!/usr/bin/Perl
<2 use strict;
<3 my $PF_INET=2;
<4 my $SOCK_DGRAM=2;
<5 my $port=2222;
<6 my $proto=getprotobyname(’udp’);
<7 my $addres=pack(’SnC4×8′,$PF_INET,$port,127,0,0,1);
<8 my ($Cmd,$test);
<9 socket(SOCKET,$PF_INET,$SOCK_DGRAM,$proto) or die “Can’t build a socket”;
<10 bind (SOCKET,$addres);
<11 $test=”test\n”;
<12 while(1){
<13 my $rip=recv (SOCKET,$Cmd,100,0);
<14 send (SOCKET,$test,0,$rip);
<15 print “$Cmd”;
<16 }
<2 use strict;
<3 my $PF_INET=2;
<4 my $SOCK_DGRAM=2;
<5 my $port=2222;
<6 my $proto=getprotobyname(’udp’);
<7 my $addres=pack(’SnC4×8′,$PF_INET,$port,127,0,0,1);
<8 my ($Cmd,$test);
<9 socket(SOCKET,$PF_INET,$SOCK_DGRAM,$proto) or die “Can’t build a socket”;
<10 bind (SOCKET,$addres);
<11 $test=”test\n”;
<12 while(1){
<13 my $rip=recv (SOCKET,$Cmd,100,0);
<14 send (SOCKET,$test,0,$rip);
<15 print “$Cmd”;
<16 }
cut命令:
cut -f 2- -d ” ” udp-c.pl.bak >udp-c.pl
最近评论