我一直在使用这个perl脚本在命令行上得到一个令牌stream
1 #!/usr/bin/perl 2 3 $i = $ARGV[0]; 4 5 while (<STDIN>) { 6 @tokens = split /\s+/; 7 print $tokens[$i] . "\n"; 8 }
典型的用法就像是
mjeong@login:~/bin$ qstat | grep XXX.0.par 1664011 0.00063 XXX.0.par mjeong qw 11/05/2010 10:34:37 16 mjeong@login:~/bin$ qstat | grep XXX.0.par | token.pl 0 1664011 mjeong@login:~/bin$ qstat | grep XXX.0.par | token.pl 1 0.00063
出于好奇,是否有一个标准的实用程序来做类似(简单)的接口 – 这样我就不必为任何新机器写这个小脚本了? 我知道awk / sed可以做到这一点,但正则expression式语法是每一个types有点复杂(我不需要更聪明的语法,因为我用了很多)
谢谢,
剪裁作品完全一样,只增加了很less的复杂性
mjeong@login:~/bin$ qstat | grep XXX.0.par | cut -d ' ' -f 1 1664011 mjeong@login:~/bin$ qstat | grep XXX.0.par | cut -d ' ' -f 2 0.00063
使用AWK命令不需要正则expression式,但也可以使用一个来执行grep部分:
$ qstat | awk '/XXX.0.par/ {print $1}' 1664011 $ qstat | awk '/XXX.0.par/ {print $1}' 0.00063
你也可以在Bash中简单地做到这一点:
$ line=($(qstat | grep XXX.0.par)); echo ${line[0]} 1664011