linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行
文章目录
- 0.sed -i与sed
- 1.修改文件内容
- 2.在文件中插入行
- 3.在文件中删除行
- 4.使用find查找文件,并用 | xargs传输文件名给sed命令
0.sed -i与sed
sed -i
就是直接对文本文件进行操作的,如果单纯是sed
那么就只是把处理结果输出到命令行,实际上文件内容没有变化。
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』-i :直接修改读取的文件内容,而不是输出到终端。
-s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
1.修改文件内容
参考:Ubuntu设置CMake编译时使用的OpenCV版本
比如CMakeLists.txt
文件内容如下:
cmake_minimum_required(VERSION 3.1)
project(test)find_package(OpenCV REQUIRED)
file(GLOB_RECURSE sources src/*.cpp)
add_exectuable(${PROJECT_NAME} SHARED ${sources})
target_link_libraries(${PROJECT_NAME}${OpenCV_LIBS}
)
使用如下命令替换OpenCV REQUIRED
为OpenCV 3 REQUIRED
sed -i "s/OpenCV REQUIRED/OpenCV 3 REQUIRED/g" CMakeLists.txt
2.在文件中插入行
参考:【Linux】在文件的指定位置插入数据
在1中替换后,CMakeLists.txt
文件内容如下,cat -n
参数代表输出显示行号。
# cc @ home-pc in ~/Desktop [0:18:24]
$ cat -n CMakeLists.txt1 cmake_minimum_required(VERSION 3.1)2 project(test)3 4 find_package(OpenCV 3 REQUIRED)5 file(GLOB_RECURSE sources src/*.cpp)6 add_exectuable(${PROJECT_NAME} SHARED ${sources})7 target_link_libraries(8 ${PROJECT_NAME}9 ${OpenCV_LIBS}10 )
通过sed -i "行数+i+空格+想要插入的语句" 想要插入的文件名
来插入,注意插入的行数是指从哪行插入。比如想从第5行插入message(STATUS "OpenCV_DIR = "${OpenCV_DIR}")
这句话,如下所示。
注意:
- 内部
"
要用转义字符\
进行转义。 - 内部
$
也要用转义字符\
进行转义,因为现在是命令行输入,会自动把$
字符认为是查找环境变量。
# cc @ home-pc in ~/Desktop [0:19:25] C:130
$ sed -i "5i message(STATUS \"OpenCV_DIR = \${OpenCV_DIR}\")" CMakeLists.txt# cc @ home-pc in ~/Desktop [0:28:24]
$ cat -n CMakeLists.txt 1 cmake_minimum_required(VERSION 3.1)2 project(test)3 4 find_package(OpenCV 3 REQUIRED)5 message(STATUS "OpenCV_DIR = ${OpenCV_DIR}")6 file(GLOB_RECURSE sources src/*.cpp)7 add_exectuable(${PROJECT_NAME} SHARED ${sources})8 target_link_libraries(9 ${PROJECT_NAME}10 ${OpenCV_LIBS}11 )
3.在文件中删除行
参考:运用sed命令高效地删除文件的特定行
- 删除第N行
sed -i 'Nd' file.txt
# 比如删除第一行:
sed -i '1d' file.txt
- 删除最后一行
# $符号代表最后一行
sed -i '$d' file.txt
- 删除从A到B连续几行
sed -i 'A,Bd' file.txt
# 比如删除5~7行:
sed -i '5,7d' file.txt
还有很多其他用法,见上面的参考博客
4.使用find查找文件,并用 | xargs传输文件名给sed命令
比如要在当前文件夹下找名为CMakeLists.txt
的文件,找到后对他们使用sed
命令进行内容修改。
- 查看当前文件夹下哪些文件中有“OpenCV REQUIRED”(无用)
# -r代表递归搜索当前文件夹下的文件内容
grep -r "OpenCV REQUIRED"
- 查看有哪些“CMakeLists.txt”文件(无用)
# -i参数代表不区分后面文件名的大小写查找
find ./ -iname "CMakeLists.txt"
- 把“CMakeLists.txt”文件中原来的“OpenCV REQUIRED”统一替换成“OpenCV 3 REQUIRED”(实用)
# xargs是传递参数,好像和管道|有点重复?
find ./ -iname "CMakeLists.txt" | xargs sed -i "s/OpenCV REQUIRED/OpenCV 3 REQUIRED/g"
xargs
是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|
管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs
命令,例如:
find /sbin -perm +700 |ls -l #这个命令是错误的
find /sbin -perm +700 |xargs ls -l #这样才是正确的
xargs 一般是和管道一起使用。
linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行相关推荐
- linux远ssh sed,ssh远程执行sed -i命令,替换的内容中含有双引号的问题
ssh远程执行sed -i命令,替换的内容中含有双引号的问题.在ssh 中执行sed -i 来替换匹配的字符串,当替换的内容中包含双引号"时,需要在转义的同时,加上单引号'"'. ...
- 使用linux中的convert命令修改图片大小
使用linux中的convert命令修改图片大小: convert -resize 22x22 Valuair.png val.png 结果会保留原来的宽高比例. 如果要生成固定的22*22大小的图片 ...
- linux shell sed awk 命令(2)-awk
linux shell sed awk 命令(2)-awk awk语法格式: awk [选项] -f program-file [ -- ] file ... 选项: -F fs, --field-s ...
- Linux改变图片大小的命令,Linux运维知识之linux下使用convert命令修改图片分辨率...
本文主要向大家介绍了Linux运维知识之linux下使用convert命令修改图片分辨率,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. Convert的resize子命令应该是 ...
- php 修改文件属性命令行,Linux_linux中如何通过命令修改文件属性,ls -l即可查看目录信息-rw - phpStudy...
linux中如何通过命令修改文件属性 ls -l即可查看目录信息 -rwxr-xr-x 1 xura xura 1753786 2010-05-09 09:54 Grad 分别对应的是: 文件属性 连 ...
- 使用thinkPhp,修改线上数据库的配置,请删除 Runtime 中的所有内容后重试
2019独角兽企业重金招聘Python工程师标准>>> 使用thinkPhp,修改线上数据库的配置,请删除 Runtime 中的所有内容后重试 转载于:https://my.osch ...
- Git入门之命令行删除文件及上传大文件至Github(二)
自2013年开始,作者的代码基本是分享到CSDN下载区,最早设置均是免费的,但随着下载量增加,分数自动增长.为了更好地分享开源代码及相关工具,赶上时代潮流,作者后续会将代码分享至Github和CSDN ...
- 命令行删除文件夹及文件夹下文件
如果文件夹下存储的文件很多(几个G或者几个T的数据),右键删除速度很慢,所以需要用到命令行删除,速度相对快很多.我整理了两个系统的删除方法,以此记录方便备查. Win10 cmd命令行删除文件夹及文件 ...
- windows 命令行删除文件和文件夹
学习内容: windows 命令行删除文件和文件夹 假设删除d盘下的123文件夹 del/s/q d:\123*.* ----(用于删除文件夹下的子文件) rd/s/q d:\123 ----(用于删 ...
最新文章
- 开放一些3D视觉相关职位!
- linux time 统计命令执行的时间
- Boost.Asio入门
- 特征预处理--长尾分布的处理方案
- 安装完matlab7.0但无法运行
- 【学术相关】发表 SCI 论文有哪些实用工具?
- bzoj 2330: [SCOI2011]糖果
- python高效处理文件_使用Python语言高效地处理一个文本文件
- [CentOS] CentOS 6 IPv6 关闭方法
- 机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现
- linux上启动git,linux上git操作与打jar包更新启动服务脚本
- MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
- Facebook反垃圾实践:人工治理与机器算法齐飞
- php使用地图插件,wordpress的百度地图插件怎么使用
- 黑苹果html5,黑苹果AppleALC声卡驱动安装使用教程 _ 黑苹果乐园
- 制作卡通人物的3种简单方法
- GPU服务器与CPU服务器的区别,如何选择GPU服务器
- Python中文文本分句
- 汇编 movl %gs:20, %eax 的作用
- MapSet哈希桶(基础+常用方法总结)
热门文章
- MacOS M1芯片 VMware部署CentOS8虚拟机及配置静态IP
- 10.10工作问题及解决
- AttributeError:module #x27tensorflow.python.keras.backend#x27 has no attribute #x27get_graph#x27
- socks服务搭建总结
- 黑魂复刻游戏的玩家控制器(基础移动,动画实现及优化)——Unity随手记(2021.3.15)
- Spark3.2教程(九)CentOS7下Spark Standalone分布式搭建
- 网络编程学习,项目er图
- 深入浅出Pytorch函数——torch.exp
- mysql 钩子程序_20200319 代码发布之任务发布钩子脚本
- Python用SMTP自动发送邮件email