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既能应对日 阅读详情

相关推荐

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

Linux下sed命令使用二三事

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

fishwang89 1068

CATIA二次开发CAA安装

安装资料在网盘里 Win7 64位 以下软件均已管理员身份运行: 1.安装vs2008->自定义安装->选择要安装的功能->Visual C+±>x64编译器和工具 1.2安装SP1 2.安装CATIA V5 R21->win7_XP->CATIA.P3.V5R21.Win64->setup.exe 2.1安装目录改为D盘 2.2环境目录位置默认 3.安装...

qq_39311458的博客 4632

sed常用用法的小结

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

Yvettre的博客 1183

基于C#的跨平台上位机开发:一次编写,多平台运行

摘要: 本文探讨了如何利用C#进行跨平台上位机开发,以适配Windows、Linux、macOS等多平台需求。通过分析传统单平台开发的局限性(如API差异、硬件接口兼容性),提出基于.NET 5/6/7的解决方案,重点推荐Avalonia(类WPF的跨平台UI框架)和GtkSharp(基于GTK+)实现图形界面。同时,针对硬件通信需求,介绍了System.IO.Ports串口通信和LibUsbDotNet的跨平台支持,并强调多平台调试(VS Code、Docker)的重要性,最终实现一次编码、多端部署的高效

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1409

深入了解BPM及BPM业务流程管理系统

BPM 即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续地提高组织业务绩效为目的的系统化方法。它涵盖了业务流程的整个生命周期,包括流程的设计、执行、监控、分析和优化。BPM 作为一种先进的管理方法,对于企业提高运营效率、降低成本、提升客户满意度和增强竞争力具有重要意义。BPM 流程管理系统为企业实现 BPM 提供了强大的工具和支持,而 F2BPM 流程管理平台以其先进的技术架构、丰富的功能模块、简单易用的操作界面和强大的定制能力,成为企业实现业务流程管理的理想选择。

Stone3625的博客 2951

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

【YOLOv12[基础]】热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 | GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

静谧、淡雅 895

Linux中sed命令详解

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

weixin_63546333的博客 1480

RTCA DO-160G标准详解:航空电子设备的全面环境适应性测试指南

第二章的主要目的是提供标准中使用的术语和定义。了解这些术语对于准确理解标准的要求至关重要,特别是在技术实施过程中。RTCA DO-160G 涉及多个学科的知识,包括航空、电子、电磁学和机械工程,因此需要确保使用的术语在所有学科中具有一致的定义。为了确保测试人员和工程师在执行测试时对所有条件和要求的理解一致,RTCA DO-160G 标准中定义了大量术语。环境应力:指的是设备在操作过程中可能遇到的外部物理或化学条件,包括温度、湿度、振动等。电磁干扰(EMI)

qq_41854911的博客 5276

fastlio2原理详解

其核心是利用IMU的高频数据(通常100-500Hz)进行状态预测(前向传播),同时利用激光雷达扫描(通常10-100Hz)作为观测来校正状态。转换了卡尔曼增益的计算公式,将对大维度观测矩阵的求逆(点云数量级)转换为对小维度状态矩阵的求逆,从而极大提升了计算效率。:利用预测出的连续IMU状态,将一帧内每个激光点根据其时间戳反向插值,统一校正到扫描结束时刻,输出无畸变的点云。收敛后,用最终的状态将本帧点云。,根据其精确的时间戳,利用前后两个IMU位姿进行插值,计算出该点采集时刻的精确位姿,再将其全部。

Studying…… 102

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

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

u013332124的专栏 1147

PCL 平面点云的凹多边形边界提取【2025最新版】

平面点云的凹多边形边界提取及边界轮廓线绘制。博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 7183

修改链接文件 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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

sed修改软链接文件的坑

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

Liv2005的专栏 3809

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值