如何用shellshell 删除文件第一行里特定的行

sed在指定行上删除和添加字符
我在一个项目中需要发布版本,两个客户的需求基本相同,只有是在一个fm34(消回音)模块上一个有该功能,另外一个没有。那么就存在在发版本的时候根据需要打开和关闭关于fm34相关的代码。
其中的一个就是是否需要inmod一个ko文件,我的处理是:
在脚本中有inmod该ko的一行代码,但是默认是被注释掉的在给需要该功能的客户发布版本时,通过sed将改行的注释去掉(shell中的#字符)编译出带有fm34功能的版本
发布版本完成后,记得将该行在注释回去(有可能在给另外一个客户发版本)
在这里,我就需要如何在脚本中自动完成上面的操作,先给出最终的脚本代码:
#!/bin/bash
# enable snd-soc-wmt-fm34
sed -i '/snd-soc-wmt-fm34/s/^#//' fs_patch/load_drivers.sh
source release_Common.sh
# disable snd-soc-wmt-fm34 back
sed -i '/snd-soc-wmt-fm34/s/^/#&/' fs_patch/load_drivers.sh
上面的代码主要是包括一下几个步骤:
删除行首的#字符,打开注释部分代码编译版本将指定行代码再次注释起来
sed行首删除一个字符
sed -i '/snd-soc-wmt-fm34/s/^#//' fs_patch/load_drivers.sh
-i表示在原始文件上进行修改。
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
s/^#//表示将字符串开头的#字符替换为空(即去除行首的#字符)
s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
其中s/regexp/replacement/命令支持address ranges,在该脚本中使用的是正则表达式匹配确定address ranges的方式:
/snd-soc-wmt-fm34/表示匹配含有snd-soc-wmt-fm34字符串的行
Match lines matching the regular expression regexp.
除了使用/regexp/的方式匹配特定行,sed还支持直接指定行号的方式进行操作,则上面的脚本也可以使用采用下面的方式完成:
sed -i '49s/^#//' fs_patch/load_drivers.sh
number Match only the specified line number.
注意,上面的数字前后都没有任何的附加字符。
sed行首添加一个字符
sed -i '/snd-soc-wmt-fm34/s/^/#&/' fs_patch/load_drivers.sh
注意,这里和上面的删除操作唯一的不同就在于s/^/#&/部分。其中,^字符匹配行首,#字符是一般字符表示添加该字符,&字符是我们这里需要重点关心的。在上面的关于s/regexp/replacement/命令描述时有以下字段:
The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
这里提到了两种特殊字符:
&:refer to that portion of the pattern space which matched,即表示前面的正则表达式匹配出来的部分,而在这里指的就是行首位置。实际上,在此处我们完全可以不要&字符,也是可以完成任务的。
\1...\9:refer to the corresponding matching sub-expressions in the regexp,主要用于多匹配时(如匹配行中的特定位置)分别表示前面的正则表达式匹配出来的部分,这里的多匹配需要使用()来进行分割,如上面的代码可以分别使用下面两种方式进行实现:
sed -i '/snd-soc-wmt-fm34/s/\(^\)/\1#/' fs_patch/load_drivers.sh
sed -i '/snd-soc-wmt-fm34/s/\(^\)\(.*\)/#\2/' fs_patch/load_drivers.sh
具体内容请参考正则表达式相关知识。
本例中是根据工作需要在行首添加和删除字符,如果是在行尾进行操作,则需要使用&通配符;而如果需要在行中的其它位置进行操作,则可能就需要使用到多匹配的方式。12724人阅读
tools&adb remount&tools&adb shell&#su&#cd system/sd/data //进入系统内指定文件夹&#ls //列表显示当前文件夹内容&#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件&#rm xxx //删除文件xxx&#rmdir xxx //删除xxx的文件夹
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:573288次
积分:7324
积分:7324
排名:第1391名
原创:148篇
转载:110篇
评论:119条
(1)(45)(23)(35)(7)(25)(30)(22)(3)(6)(24)(37)新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分118阅读权限10帖子精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
白手起家, 积分 118, 距离下一级还需 82 积分
帖子主题精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
论坛徽章:0
不能用 awk sed 和grep等等工具
怎么删除 文档中的制定行
例如 test文档中有
1 Mary;xxxx;
2 Harry;xxxx;
3 Barry;xxxx;
根据关键字 比如Harry 删除文档 第二行
test文档变成
1 Mary;xxxx;
2 Barry;xxxx;
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
我曾多么爱你
UID空间积分0 积分1213阅读权限30帖子精华可用积分1213 信誉积分102 专家积分0 在线时间467 小时注册时间最后登录
家境小康, 积分 1213, 距离下一级还需 787 积分
帖子主题精华可用积分1213 信誉积分102 专家积分0 在线时间467 小时注册时间最后登录
论坛徽章:0
无语的帖子
UID8213186空间积分1 积分14013阅读权限90帖子精华可用积分14013 信誉积分2539 专家积分369 在线时间8486 小时注册时间最后登录
大富大贵, 积分 14013, 距离下一级还需 5987 积分
帖子主题精华可用积分14013 信誉积分2539 专家积分369 在线时间8486 小时注册时间最后登录
论坛徽章:3
$ grep -Fv Harry urfile复制代码$ sed '/Harry/d' urfile复制代码$ awk '!/Harry/' urfile复制代码
LIVE FREE OR DIE!& &&&K.I.S.S.&&DRY
远离& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&shell
UID空间积分0 积分118阅读权限10帖子精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
白手起家, 积分 118, 距离下一级还需 82 积分
帖子主题精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
论坛徽章:0
我不会啊 不知道怎么写 只会用awk grep写
我知道这样很费劲 但是没办法 写不出来
UID空间积分0 积分118阅读权限10帖子精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
白手起家, 积分 118, 距离下一级还需 82 积分
帖子主题精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
论坛徽章:0
前提要求就是 不能用 grep awk sed 来写
我曾多么爱你
UID空间积分0 积分1213阅读权限30帖子精华可用积分1213 信誉积分102 专家积分0 在线时间467 小时注册时间最后登录
家境小康, 积分 1213, 距离下一级还需 787 积分
帖子主题精华可用积分1213 信誉积分102 专家积分0 在线时间467 小时注册时间最后登录
论坛徽章:0
回复&&shplpy
我不会啊 不知道怎么写 只会用awk grep写
我知道这样很费劲 但是没办法 写不出来
hanxu588 发表于
& & 直接在文件中删除似乎不行,只能是把你想要的文本重新输出到新的文件
UID空间积分0 积分118阅读权限10帖子精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
白手起家, 积分 118, 距离下一级还需 82 积分
帖子主题精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
论坛徽章:0
我也是这么想的 就想 问问有没有更简单的方法
暂时 没写出来
初学shell 有很多不懂的 多谢了
我曾多么爱你
UID空间积分0 积分1213阅读权限30帖子精华可用积分1213 信誉积分102 专家积分0 在线时间467 小时注册时间最后登录
家境小康, 积分 1213, 距离下一级还需 787 积分
帖子主题精华可用积分1213 信誉积分102 专家积分0 在线时间467 小时注册时间最后登录
论坛徽章:0
楼主误解了shell脚本的含义吧
UID8213186空间积分1 积分14013阅读权限90帖子精华可用积分14013 信誉积分2539 专家积分369 在线时间8486 小时注册时间最后登录
大富大贵, 积分 14013, 距离下一级还需 5987 积分
帖子主题精华可用积分14013 信誉积分2539 专家积分369 在线时间8486 小时注册时间最后登录
论坛徽章:3
& & 我晕,不能用 awk sed 和grep等等工具
可以要用什么工具?
LIVE FREE OR DIE!& &&&K.I.S.S.&&DRY
远离& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&shell
UID空间积分0 积分118阅读权限10帖子精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
白手起家, 积分 118, 距离下一级还需 82 积分
帖子主题精华可用积分118 信誉积分100 专家积分0 在线时间50 小时注册时间最后登录
论坛徽章:0
就是最基本的shell语言 不能用任何tools
应为用awk sed grep很简单 所以......求助 Shell中sed命令删除行时引用变量_百度知道
求助 Shell中sed命令删除行时引用变量
我想删除文件1至N行,N是一个变量。请问命令如何写?谢谢
提问者采纳
假设文件名为test.txt即sed -e &1,${N}d& test.txt输出到标准输出,如果将内容修改即sed -e &1,${N}d& test.txt -i
提问者评价
可以的·谢谢。新手刚开始学习,麻烦你了,
来自团队:
其他类似问题
为您推荐:
您可能关注的推广回答者:回答者:
sed的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁LinuxShell中删除文件中某一行的方法
  如果有一个abc.txt文件,内容是:  aaa  bbb  ccc  ddd  eee  fff  如果要删除aaa,那么脚本可以这样写:  sed -i '/aaa/d' abc.txt  如果删除的是一个变量的值,假如变量是var,应该写成:  sed -i '/'"$var"'/d' abc.txt  至于grep -v aaa abc.txt这个方法,是无法将修改的结果写入abc.txt中去的
热门培训12345678&&

我要回帖

更多关于 shell 删除文件夹 的文章

 

随机推荐