首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >grep,用于在特定位置的特定行中包含特定文本的文件

grep,用于在特定位置的特定行中包含特定文本的文件
EN

Stack Overflow用户
提问于 2014-05-15 21:23:57
回答 3查看 291关注 0票数 3

我需要grep在文件的某一行(第1行)的某个位置(7-8)有特定字符串("OB")的文件的文件名。

那么最好的方法是什么呢?

EN

回答 3

Stack Overflow用户

发布于 2014-05-15 21:37:04

如何使用head获取每个文件的第一行,然后使用相应的regexp执行grep,并输出前面的行以保留文件名:

代码语言:javascript
运行
复制
head -n1 * | grep -EB1 '^.{6}OB'

当然,您必须更改文件选择-这里是*-以满足您的需求。

更新:问题已更新-如果您只需要文件名,只需添加另一个grep来捕获head命令给定的文件名:

代码语言:javascript
运行
复制
head -n1 * | grep -EB1 '^.{6}OB' | grep '==>'
票数 2
EN

Stack Overflow用户

发布于 2014-05-15 22:00:56

那使用awk呢..

代码语言:javascript
运行
复制
awk 'FNR == 1 && /^.{6}OB/ {print FILENAME; nextfile}' *
票数 2
EN

Stack Overflow用户

发布于 2014-05-15 22:12:43

awk可能更适合这项工作:

代码语言:javascript
运行
复制
line=1
pos=7
len=2
awk "FNR==${line} && substr(\$0,${pos},${len})=='OB'{print FILENAME}" myfiles

或者:

代码语言:javascript
运行
复制
awk -vl=${line} -vp=${pos} -vn=${len} 'FNR==l && substr($0,p,n)=="OB"{print FILENAME}' myfiles
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23679589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档