sed -i修改链接文件注意问题

Linux sed 删除行实战:单行、多行、正则与 -i 原地修改 Linux 文本处理经常围绕流式编辑器展开:sed 逐行读入模式空间,地址定址决定命中哪些行,d 命令清空当前模式空间,使该行不进入输出流。这一机制让 sed 删除一行、sed 删除多行、按正则删行和原地修改都能在管道与脚本中高效完成。工程实践里,它常用于清理 CSV 表头、配置文件注释与空行、日志噪声和批量脏数据。真正落地时,还要处理 GNU/BSD 的 -i 差异、CRLF 行尾、范围终点未匹配以及权限和软链接变化。掌握从行号、正则到 sed -i 的组合,才能稳定完成 Linux 下可复用的文本清洗任 阅读详情

因为sed -i /etc/sysconfig/selinux(selinux文件是/etc/selinux/config的软链接)配置文件重启SELINUX没有关闭,才发现原来sed -i是不能直接修改软链接文件的,如下我修改之后的后果:

[root@node1 ~]# ll /etc/sysconfig/selinux 
lrwxrwxrwx. 1 root root 19 2月  20 20:34 /etc/sysconfig/selinux -> /etc/selinux/config
[root@node1 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
[root@node1 ~]# ll /etc/sysconfig/selinux 
-rw-r--r-- 1 root root 457 2月  20 22:50 /etc/sysconfig/selinux
[root@node1 ~]# 

我们发现链接文件不再是链接文件了,后来查看sed man选项时发现如下选项说明

--follow-symlinks
              follow symlinks when processing in place; hard links will still be broken.

-i[SUFFIX], --in-place[=SUFFIX]
              edit  files  in  place (makes backup if extension supplied).  The default operation mode is to
              break symbolic and hard links
.  This can be changed with --follow-symlinks and --copy.

-c, --copy
              use copy instead of rename when shuffling files in -i mode.  While this  will  avoid  breaking
              links  (symbolic  or hard), the resulting editing operation is not atomic.  This is rarely the
              desired mode; --follow-symlinks is usually enough, and it is both faster and more secure.

以上说明就不作过多解释了,说的很明显,看下面实例

[root@node1 ~]# echo "test" >>test
[root@node1 ~]# ln -s ~/test ~/test_soft
[root@node1 ~]# ln ~/test ~/test_hard
[root@node1 ~]# ll -i test*
271653 -rw-r--r-- 2 root root  5 2月  20 23:04 test
271653 -rw-r--r-- 2 root root  5 2月  20 23:04 test_hard
271655 lrwxrwxrwx 1 root root 10 2月  20 23:04 test_soft -> /root/test
[root@node1 ~]# sed -i "s/test/hard/g" test_hard 
[root@node1 ~]# sed -i "s/test/soft/g" test_soft 
[root@node1 ~]# ll -i test*
271653 -rw-r--r-- 1 root root 5 2月  20 23:04 test
271656 -rw-r--r-- 1 root root 5 2月  20 23:05 test_hard
271657 -rw-r--r-- 1 root root 5 2月  20 23:06 test_soft
[root@node1 ~]# 
很明显如man中所说-i选项对软链接和硬链接都会使受到破坏

[root@node1 ~]# rm -rf test*
[root@node1 ~]# echo "test" >>test
[root@node1 ~]# ln -s ~/test ~/test_soft
[root@node1 ~]# ln ~/test ~/test_hard
[root@node1 ~]# ll -i test*
271653 -rw-r--r-- 2 root root  5 2月  20 23:08 test
271653 -rw-r--r-- 2 root root  5 2月  20 23:08 test_hard
271655 lrwxrwxrwx 1 root root 10 2月  20 23:08 test_soft -> /root/test
[root@node1 ~]# sed -i -c  "s/test/soft/g" test_soft 
[root@node1 ~]# sed -i -c  "s/test/soft/g" test_hard 
[root@node1 ~]# ll -i test*
271653 -rw-r--r-- 2 root root  5 2月  20 23:11 test
271653 -rw-r--r-- 2 root root  5 2月  20 23:11 test_hard
271655 lrwxrwxrwx 1 root root 10 2月  20 23:08 test_soft -> /root/test
--follow-symlinks选项只对软链接有效,硬链接还是会被破坏,建议使用-c选项,这里就不举例了

后来朋友在RHEL5上运行相同的操作居然没有出现类似的现象,运行结果如下:

$ echo "test" >> test
$ ln -s ~/test ~/test1
$ ll ~/test1
lrwxrwxrwx 1 sxkj sxkj 15 02-21 13:26 /home/sxkj/test1 -> /home/sxkj/test
$ sed -i "s/test/test1/g" ~/test1
$ ll ~/test1
lrwxrwxrwx 1 sxkj sxkj 15 02-21 13:26 /home/sxkj/test1 -> /home/sxkj/test
经查是sed的版本不同造成的影响,RHEL5系列的还是使用老版本的sed,没有--follow-symlinks类似的选项,笔者之前实验的版本是RHEL6.3,所以出现之前的一系列问题了

sed -i命令详解:文件内容替换、插入、删除与避坑指南 sed作为Linux流编辑器,通过-i选项实现原地修改文件,是运维和脚本开发中高效处理文本的利器。其核心原理基于数据流逐行处理,无-i时仅输出到屏幕,加上-i后才真正写回文件。利用s命令配合正则表达式可实现精准替换,i/a命令在指定位置插入行,d命令按模式或范围删除行,组合使用能完成复杂的批量编辑。在修改配置文件、清理日志、批量更新参数等场景中,sed -i能大幅提升效率。但使用时需注意分隔符冲突、特殊字符转义、备份后缀及跨平台差异,建议先试跑再落盘,并善用grep统计与备份机制。掌握sed -i既能应对日 阅读详情

相关推荐

论文、报告中那些乱七八糟的图(甘特图、卡吉图,桑基图,小提琴图,弦图,螺旋图,风玫瑰图)

在一些论文或报告中,总是会看到一些熟悉的图,但作者总是不能好好说话,非得搞个洋名字、缩写字或者半洋半中的词来显示它多么高大上,有时候这种故弄玄虚、华而不实的写法也实在是让人看了不伦不类,图首先是让读者更容易看懂的,不是让你来故作高深、玩玄学的。

David_jiang 9429

Linux下sed命令使用二三事

sed命令的-i选项作用是让用户直接修改源文件,例如有一个十万行的文本文件,如果用vim修改可能会比较麻烦,这个时候通过sed修改即可 但-i选项会带来一个问题,就是会破坏软链接和硬链接 sed -h查看sed各选项的作用,可以看到--follow-symlinks和-c两个选项(旧版本的sed可能没有-c),其中--follow-symlinks选项只对软链接起作用,即还是会破坏硬链

fishwang89 1068

GK2302量产工具下载方法,GK2302开卡教程,GK2301LT怎么开卡方法,附GK2302开卡工具,GK2301LT量产软件下载

​每种量产软件的操作流程可能略有不同,因此必须按照要求操作。为确保安全,建议使用量产部落网下载的原版量产开卡软件。

A520091000的博客 2123

sed常用用法的小结

sed常用用法的小结1. 常用选项2. 常用动作3. 实例增加行删除行打印行替换整行替换行内的部分内容(含大小写转换)连续命令 sed(stream editor)命令是一个面向字符流的非交互式编辑器,是按行来处理文本内容的;它还能配合管线来使用,非常高效 我之所以想学会使用这个命令,是因为:当同一个长文本每次执行只需要修改一个小地方时,使用sed能直接对文本操刀,避免使用复杂的python文本生...

Yvettre的博客 1183

峰值电流模式CCM BUCK的传递函数推导

电流内环闭环传递函数: Gci(s)=i^L(s)v^comp(s)=FmGid(s)1+KRiHe(s)FmGid(s)=1Ri11+s[mcL+(0.5VIN−Vo)RiVINRifSW]+s21(πfSW)2 G_{ci}(s)=\frac{\hat i_{L}(s)}{\hat v_{comp}(s)}=\frac {F_mG_{id}(s)}{1+KR_iH_e(s)F_mG_{id}(s)}=\frac{1}{R_i}\frac{1}{1+s[\frac{m_cL+(0.5V_{IN}-V_o)

c007106333的博客 2356

Adobe Acrobat Pro(Adobe PDF) - 使用技巧

Adobe Acrobat Pro为Adobe出品的PDF查看和编辑软件,下文简称Adobe PDF,该软件功能强大,拥有查看PDF、编辑PDF、打印PDF、导出PDF、合并文件、组织页面、文本标注、注释、动作向导、等功能。本文介绍Adobe PDF的一些使用技巧,最后介绍软件设置。

NSJim的博客 4万+

linux安全加固配置

sed --follow-symlinks -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config setenforce 0 设置selinux 设置端口号为22022 sed --follow-symlinks -i 's/#Port 22/Port 22022/' /etc/ssh/sshd_config 禁用root远...

zsw208703的博客 811

基于STM32的智能浇花系统毕业设计(全部资料)

摘要:本文设计了一种基于STM32单片机的智能浇花系统,集成了环境温湿度检测、土壤温湿度监测、LCD显示、Wi-Fi联网及手机APP远程控制等功能。系统通过传感器实时采集环境参数,自动控制水泵工作实现智能灌溉,同时支持用户通过手机APP远程监控和调节。论文详细阐述了硬件选型、软件设计及系统测试过程,验证了系统的稳定性和实用性。该设计为家庭园艺提供了智能化解决方案,具有节水高效、操作便捷等特点。关键词:STM32;智能灌溉;远程控制;环境监测;Wi-Fi通信。

3254968421的博客 1195

Linux中sed命令详解

sed是Linux的一种文本编辑器,与grep、awk并称为Linux文本三剑客。

weixin_63546333的博客 1480

反爬虫:对抗最新反爬技术 Cloudflare详解

本文针对Cloudflare最新反爬机制提供完整解决方案,覆盖TLS指纹、行为轨迹、设备指纹等检测场景。文章首先分析Cloudflare的三重检测体系(TLS指纹、行为指纹、设备指纹)及其拦截表现,随后提出四种绕过方案:1)使用curl_cffi模拟浏览器TLS指纹;2)通过undetected-chromedriver移除自动化特征;3)Playwright结合stealth插件模拟人类行为;4)动态请求调度策略。重点推荐轻量级Python方案curl_cffi和浏览器自动化方案Playwright-st

数据知道的博客 4626

YOLOv11改进 | 注意力篇 | YOLOv11引入CA注意力机制

摘要:最近关于移动网络设计的研究已经证明了通道注意力(例如,挤压和激励注意力)对于提升模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图很重要。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~3.2 在Extramodule里创建CA。在CA.py文件里添加给出的CA代码。

tsg6698的博客 2979

【linux命令学习】— sed 命令学习

文章目录一、概述什么是sedsed的工作原理二、使用姿势1. 主要语法sed支持的参数address—行寻址command—sed支持的命令-e 参数2. 各个命令的使用姿势p — 打印行P — 输出多行中的第一行d — 删除行D — 删除多行中的第一行s — 替换行中的内容a — 在行后添加内容i — 在行前添加内容c — 把整行替换成指定的内容y — 对单个字符进行替换n — 对当前行的下一行...

u013332124的专栏 1147

完整 Bootloader 框架

本文详细介绍了嵌入式系统中Bootloader的完整框架设计。主要内容包括:1.Bootloader的核心功能模块,如应用启动、命令交互、下载功能、Flash烧写和调试维护;2.模块化设计框架,包含启动代码、驱动层、协议实现等组件;3.典型工作流程和关键模块实现,如命令行接口、命令注册机制、Flash操作等;4.应用跳转前的准备工作和安全扩展设计,如加密校验、OTA支持等。文章强调了一个成熟Bootloader在系统维护、升级和安全中的重要性,建议采用模块化、可扩展的设计方法。

m0_49476241的博客 1337

修改链接文件 linux,sed 替换、修改链接文件注意问题

sed 替换、修改链接文件注意问题#系统与版本[root@localhost ~]# cat /etc/redhat-releaseCentOS release 6.8 (Final)[root@localhost ~]# sed --versionGNU sed version 4.2.1Copyright (C) 2009 Free Software Foundation, Inc.This ...

weixin_35599933的博客 535

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux sed i 大文件,sed -i   修改链接文件注意事项   破坏了原文件

因为sed -i /etc/sysconfig/selinux(selinux文件是/etc/selinux/config的软链接)配置文件重启SELINUX没有关闭,才发现原来sed -i是不能直接修改软链接文件的,如下我修改之后的后果:[root@node1 ~]# ll /etc/sysconfig/selinuxlrwxrwxrwx. 1 root root 19 2月 20 20:34 ...

weixin_31281027的博客 480

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

sed修改软链接文件的坑

随手记一笔。太长不看版: sed修改软链接文件时,会将文件从链接变成真实文件,如果依然保持链接的状态,需要加参数--follow-symlinks,但需要注意旧版本的sed不支持这个参数。详细:前一阵有同事问,他通过命令: sed -i '$a sh /bin/iptables.sh' /etc/rc.local来修改了/etc/rc.local,但发现机器重启后,iptables.sh并没有运行...

Liv2005的专栏 3809

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

sed -i   修改链接文件注意事项   破坏了原文件

因为sed -i /etc/sysconfig/selinux(selinux文件是/etc/selinux/config的软链接)配置文件重启SELINUX没有关闭,才发现原来sed -i是不能直接修改软链接文件的,如下我修改之后的后果: [root@node1 ~]# ll /etc/sysconfig/selinux lrwxrwxrwx. 1 root root...

weixin_33785972的博客 283

sed 文本修改、替换命令用法

概述 sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。sed是按行来处理文本内容的。在shell中,使用sed来批量修改文本内容是非常方便的。 sed命令的选项 语法:sed [选项] [动作] 选项与参数: function: 一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。 删除行 //test.txt 内容如下 sed '1,2d' test.xx 输出: 其中1,2d中的d.

qq_40692494的博客 1万+

linux的sed命令

sed(Stream Editor),流编辑器。对标准输出或文件逐行进行处理可以对标准输出 或 文件 进行 修改字符串/删除该行 处理工作模式:sed处理文本的时候,是逐行处理。会首先有个pattern来检查当前行是否匹配,如果该行匹配,那么对该行执行command编辑命令处理。如果该行不匹配,那么就不会对该行处理,而继续下一行。

pscool的博客 1429

【shell】脚本修改、读取配置文件的值|shell配置文件conf处理

目录 问题 实例 问题 问: 想在bash脚本中修改改安装Oracle软件的响应文件db_install.rsp。 相关参数有: SELECTED_LANGUAGES=en,zh_CN,zh_TW ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE 原文本只含有“参数=”,如何在bash中批量赋值给对应参数? 答: .

我的笔记本 1万+

修改 elf 文件中 interp 的两种方法

objcopy --dump-section .interp=test ./ls /lib64/ld-linux-x86-64.so.2 [longyu@debian-10:06:55:04] ~ $ od -c test 0000000 / h o m e / l o n g y u / l d - 0000020 l i n u x - x 8 6 - 6 4 . s o .

龙瑜的博客 1850

sed 精讲:批量修改文本的正确姿势

sed 是高效处理文本流的工具,核心解决大文件低内存、逐行处理与管道协作问题。它以“一行一处理”模型运行,支持正则地址定位、替换、删除、插入等操作,配合 -n、-i、-e 等选项实现配置修改、日志清洗、内容提取等场景。典型用法包括原地修改配置、上下文定位替换、多行合并、捕获字段值(如 sed -n 's/.../\1/p'),并可通过自定义分隔符避免路径转义,提升可读性。

weixin_42211117的博客 305

【Shell】Sed 删除、替换、增加字符串

Sed语法 删除、替换、增加字符串 删除 # Delete text between patterns, excluding the lines containing these patterns(不删除所在行): sed -i '/PATTERN-1/,/PATTERN-2/{//!d}' input.txt # Delete text between patterns, including the lines containing these patterns(所在行也删除): sed

我的笔记本 4万+

linux下sed修改文件内容,用sed替换文件中的内容(转)

看到有人用 sed 工具批量替换文件中的内容:cat error.h | sed -e s/^extern\ int\ errno\;/#include\ \/ > error.h于是仿照这个用法,来做我的处理。我的CVS从winnt平台迁移到了linux下面了,原来的文件夹名是大小写不敏感的,现在需要注意了,这不, 出问题了:)我的模块名原来是webmail_admin, 而在CVS仓库中...

weixin_42550614的博客 778

sed批量递归修改文件内容

最近因为服务器升级需要大量修改ip所以很是头疼,百感交集之时发现高人所记录的sed用法 亲测实用 批量替换文本里的字符串 我直接运行 sed -i "s/原文本/替换后的文本/g" `grep -rl 原文本 ./` 轻松搞定 参数也解释一下吧 sed 是一个“非交互式”面向字符流的编辑器,还有其他很多强大的用法请自行百度 sed -i : 直接修改文件内容 grep -l : 查找到...

whyicantusechinese的博客 1647
上一篇: 关于RHEL6.3 sysctl 一个错误问题的解决
下一篇: route添加删除备忘
kumu_Linux
博客等级 码龄15年 68粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值