博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本,根据字符串获取行号的
阅读量:7228 次
发布时间:2019-06-29

本文共 476 字,大约阅读时间需要 1 分钟。

awk中不能解析shell变量,建议做法是通过-v传递进去:

1
typeline=`
cat 
$typepath | 
awk 
-
v 
str=
"$typetmp" 
'/str/{print NR}'
`

第一句之所以在awk中可以直接使用shell变量$line,是因为用的双引号。

 

从执行效率上来说,你的写法其实太过累赘,下面是改良版:

1
2
typetmp=`
awk 
-F
":" 
-
v 
n=$line 
'NR==n{print $1}' 
$paratmppath`
typeline=`
sed 
-n 
'/'
"$typetmp"
'/=' 
$typepath`

这里用sed来获取行号。

第一句,cut能做的awk也能做,直接在一个awk里完成就行。

awk和sed本身就是直接对文件的处理,用不着先cat再通过管道传递过来处理。

"$typetmp"前面的单引号用于跟一开始的单引号凑成一对,关闭sed作用域回到shell环境中,使得shell可以解析此变量,然后重新用单引号再次进入sed作用域。等于将sed作用域从中间分割开了。

转载地址:http://vcdfm.baihongyu.com/

你可能感兴趣的文章
Oracle——18用户、角色和权限信息的视图总结
查看>>
WordPress 中的 Debug 模式(调试模式)
查看>>
node下使用express框架,ejs模板引擎
查看>>
搜索:文本的匹配算法
查看>>
Fedora 17 LibreOffice 办公套件的安装与汉化
查看>>
scrollview不充满屏幕的原因
查看>>
PHP单例模式
查看>>
解密敏捷自动化测试
查看>>
DelphiMVC拦截器介绍
查看>>
Spring Cloud构建微服务架构:分布式配置中心【Dalston版】
查看>>
iOS 11正式版终于来了!强力助攻小程序
查看>>
开放平台API接口调用频率控制系统设计浅谈
查看>>
Lucene4.3进阶开发之潜龙勿用( 七)
查看>>
DTD和schema小总结
查看>>
去掉导航栏的黑线
查看>>
怎样让html加载完毕后加载js代码
查看>>
piwik 案例介绍
查看>>
敏感字过滤
查看>>
为什么我们要从 NodeJS 迁移到 Ruby on Rails
查看>>
Android 文件式数据库Realm
查看>>