分页: 1 / 1

Sed 打印指定行的两种方法求解

发表于 : 2011-03-20 1:27
chunhe
脚本中需要指定行打印,但是 -n 和q;d效率区别太大了。想用方法二实现
方法1:
root@SiteAA # time sed -n 50p xmlsoapdata_20110316_202910.log


real 0m0.197s
user 0m0.113s
sys 0m0.084s
方法2
root@SiteAA # time sed '50q;d' xmlsoapdata_20110316_202910.log


real 0m0.008s
user 0m0.002s
sys 0m0.006s

但是实际上遇到如下问题,说不认识这个命令。 又没有人能解?

设置变量
root@SiteAA # gtclinenum=5

直接用 sed '50q;d' GTC.txt 打印没问题:

root@SiteAA # sed '50q;d' GTC.txt
Received sequence : 8705629

用变量调用的时候就有问题

root@SiteAA # sed "'"$gtclinenum"q;d'" GTC.txt
Unrecognized command: '5q;d'

变量回显出来还是不行

root@SiteAA # sed `echo "'"$gtclinenum"q;d'"` GTC.txt
Unrecognized command: '5q;d'


请大家多多帮助,多谢多谢

Re: Sed 打印指定行的两种方法求解

发表于 : 2011-03-20 8:34
fnan
kose5@kose5-Aspire-4552:~$ cat test.txt
1 hola todos
2 encuentrame si puedes
3 me encontraste
4 adios
kose5@kose5-Aspire-4552:~$ gtclinenum=3
kose5@kose5-Aspire-4552:~$ gtcommd=$gtclinenum'q;d'
kose5@kose5-Aspire-4552:~$ sed $gtcommd test.txt
3 me encontraste
kose5@kose5-Aspire-4552:~$

Re: Sed 打印指定行的两种方法求解

发表于 : 2011-03-21 18:35
sk1418
1, 你的方法1肯定会慢,因为在打印第50行以后会处理所有的行,试试这个

代码: 全选

sed -n '50{p;q;}'
2如果是变量可以这样

代码: 全选

whateverVar=50
sed -n "$whateverVar{p;q;}" yourFile