脚本中需要指定行打印,但是 -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'
请大家多多帮助,多谢多谢
Sed 打印指定行的两种方法求解
-
- 帖子: 45
- 注册时间: 2007-04-05 13:26
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: Sed 打印指定行的两种方法求解
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:~$
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:~$
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。