首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除文件中的数据范围

删除文件中的数据范围
EN

Stack Overflow用户
提问于 2014-07-31 23:49:08
回答 1查看 58关注 0票数 0

我正在尝试使用linux bash脚本删除文件中的一系列数据。

文件:

代码语言:javascript
复制
1. [/]
2. 
3. [A:/]
4. Test1 = rw
5. Test2 = r
6. * = 
7.
8. [B:/]
9. Test3 = r

我正在尝试删除第3-7行。我研究过使用grep,它返回搜索条件([)和行号的实例,但它以长字符串的形式返回。然后,我将尝试拆分字符串,并获取要删除的相关数据。

我将知道第3行的数据,但我不知道括号中的下一项是什么,因此需要搜索才能找到该部分。

有没有更好的方法来做这件事,因为我相信我的方法会花费更长的时间和大量的代码来实现?

EN

回答 1

Stack Overflow用户

发布于 2014-07-31 23:52:17

如果你知道这些数字,你可以使用这个awk:

代码语言:javascript
复制
$ awk 'NR<3 || NR>7' a
1. [/]
2. 
8. [B:/]
9. Test3 = r

否则,使用此命令跳过[A] (包含)和[B] (不包含)之间的行:

代码语言:javascript
复制
$ awk '/[A]/ {f=1} /[B]/ {f=0} !f' a
1. [/]
2. 
8. [B:/]
9. Test3 = r

这将在找到[A]时设置标志f,并在找到[B]时取消设置。然后,仅当该标志未被设置时,!f条件为真。由于awk在true条件下的默认行为是打印行,因此它会在未设置标志时打印行。

更新

是的,我从第3行到下一个方括号之前的行

代码语言:javascript
复制
$ awk '{if (f==1 && $0 ~ /\[/) f=0} NR==3 {f=1} !f' file
1. [/]
2. 
8. [B:/]
9. Test3 = r
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25063471

复制
相关文章

相似问题

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