Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >首先使用sed替换文件中的字符串

首先使用sed替换文件中的字符串
EN

Stack Overflow用户
提问于 2011-04-21 09:35:04
回答 5查看 964关注 0票数 5

我想知道如何替换整个file.For示例中第一个搜索到的模式,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.File;
import java.io.File;

应替换为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.IOException;
import java.io.File;

我如何使用sed来实现这一点?谢谢

EN

回答 5

Stack Overflow用户

发布于 2011-04-22 05:34:48

当然,如果只需要替换就可以在一行中完成所有工作,那么就没有必要编写一些大而长的脚本。你只需要为这项工作选择合适的电动工具。

下面是Perl的一行代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% cat -n /tmp/f
     1  import java.lang.Character;
     2  import java.io.File;
     3  import java.io.File;
     4  import java.util.Pattern;

% perl -pe 's//IoException/ if m?import java\.io\.\KFile?' /tmp/f
import java.lang.Character;
import java.io.IoException;
import java.io.File;
import java.util.Pattern;

如果您想编辑文件,只需添加-i.bak即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% perl -i.bak -pe 's//IoException/ if m?import java\.io\.\KFile?' /tmp/f

% head /tmp/f{,.bak}
==> /tmp/f <==
import java.lang.Character;
import java.io.IoException;
import java.io.File;
import java.util.Pattern;

==> /tmp/f.bak <==
import java.lang.Character;
import java.io.File;
import java.io.File;
import java.util.Pattern;

这样做的原因是,当您为m//操作符提供??分隔符时,它需要记住一些内置状态,以便仅在第一次匹配时才进行匹配。

然后,在替换中,空模式意味着重用最后一个匹配的模式,因此您不必再次键入它,从而冒着两个模式永远不同的风险。

最后,模式中的\K在比赛中食言,把东西“留”在左边,这样它就不会被替补吃掉。

票数 2
EN

Stack Overflow用户

发布于 2011-05-27 13:17:52

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat file | sed -e ':l
    0,/my_search_str/ {
    /my_search_str/! {
            N;
            b l
            }
    s/my_search_str/replace_this/g  
    :t
    N
    b t     
    }
    '

这对我很有效: file:(之前)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello1
my_search_str
hello2
mysearch_str
hello3

文件:(之后)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello1
replace_this
hello2
mysearch_str
hello3
票数 2
EN

Stack Overflow用户

发布于 2011-05-27 14:14:46

我要做的是将所有行都添加到一个很棒的行中,并替换内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat f
import java.io.File;
import java.io.File;
$ sed -n 'N
  ${
    s/import java.io.File;/import java.io.IOException/
    p
  }' f
import java.io.IOException
import java.io.File;

工作原理:首先,我禁止行打印,这是默认行为,将-n选项传递给sed。

然后就是赛义德司令官。第一个是N命令:它将一个换行符和流的下一行附加到当前行,然后在模式空间中进行维护。这会将当前行更改为下一行,然后将追加下一行...直到文件的末尾。

在文件的末尾以及在最后一行执行的N命令之后,模式空间将包含所有行。然后,在文件末尾(由$地址指定),我们只需将所需的行替换为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s/import java.io.File;/import java.io.IOException/

由于默认情况下,s///命令在模式空间中每次迭代只进行一次替换,因此它将只替换第一行。现在,模式空间替换了行,但由于我们使用了-n选项,因此不会打印出来。因此,我们需要使用p命令打印它。一旦我们将在文件末尾执行两个操作,我们使用$对其进行寻址,并将操作放在括号({})之间。

在这里,为了清楚起见,我们只在多行中给出了sed命令。我们可以在一行中使用它们;只需用分号分隔它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sed -n 'N;${s/import java.io.File;/import java.io.IOException/;p;}' f
import java.io.IOException
import java.io.File;

HTH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5742206

复制
相关文章
如何使用 sed 替换文件中的字符串?
在 Linux 系统中,sed 是一个非常有用的文本处理工具,它可以用于在文件中进行字符串替换操作。sed 是流编辑器(stream editor)的缩写,它可以对文本进行逐行处理,包括查找和替换特定的字符串。本文将详细介绍如何使用 sed 命令在文件中进行字符串替换操作。
网络技术联盟站
2023/06/09
5.5K0
如何使用 sed 替换文件中的字符串?
Linux批量替换某种类型文件中的字符串-sed和grep命令使用
今天在修改rpm打包的spec配置文件时,遇到一个问题就是:需要将100个左右源代码中的spec配置文件中的Release一行中的发布版本号使用宏变量%{_release}进行替换。
ccf19881030
2019/04/23
5.8K0
Linux中使用sed命令替换字符串小结 原
单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:
拓荒者
2019/03/11
3.4K0
linux sed 批量替换字符串 原
Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。
拓荒者
2019/03/11
5.4K0
linux 使用sed替换文本
背景:在linux 服务器上,有时我们想通过命令行的方式替换掉文件中的某个字符串,可以使用sed命令。具体的命令详情可参考:http://www.runoob.com/linux/linux-comm-sed.html
小白will
2019/01/28
5.9K0
sed直接替换文件内容 原
sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。
拓荒者
2019/03/11
3.9K0
linux命令行中替换多个文件中的字符串
将当前目录下所有文件中的tmp替换成rumenz sed > sed -i 's/tmp/rumenz/g' * 替换前备份 > sed -i '.bak' 's/tmp/rumenz/g' * find > find ./ -type f -exec sed -i 's/tmp/rumenz/g' {} \; 不区分大小写 > find ./ -type f -exec sed -i 's/tmp/rumenz/gI' {} \; grep sed > grep -rl tmp ./ | xarg
入门笔记
2022/06/02
4.2K0
linux下sed正则表达式匹配批量替换文件中的内容
sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
李小白是一只喵
2020/04/24
6K0
linux下sed正则表达式匹配批量替换文件中的内容
sed 使用正则表达式进行替换
echo "111(222)333" | sed 's/(\(.*\))\(.*\)/\2\2\2/'
2019/12/20
4.1K0
Sumly法直接替换文件中的字符串_
perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt
Dlimeng
2023/06/29
1480
Makefile中的字符串替换
Makefile Tutotial最后给出了一段makefile,里面OBJS有字符串通配、替换的过程:
mingjie
2023/10/13
5060
Linux中sed工具的使用
sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
谢公子
2022/01/19
2.3K0
Linux中sed工具的使用
js替换html中的字符串,js怎么替换字符串?
在js中,可以使用str.replace()方法来替换字符串。replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;然后返回一个新的字符串。
全栈程序员站长
2022/08/30
23.5K0
js替换html中的字符串,js怎么替换字符串?
Java中替换字符串的方法
1. replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了就是字符串的意思)。
bisal
2021/10/15
5.7K0
php替换字符串中,PHP 替换字符串中的一些字符方法介绍
在php中替换字符串我们都会使用到str_replace函数了,此函数还可以使用正则,下面小编来给大家介绍一下替换字符串中的一些字符或替换第一次出现的字符实例。
全栈程序员站长
2022/08/25
4.7K0
php替换字符串中,PHP 替换字符串中的一些字符方法介绍
Mac中使用sed -i替换文本内容错误
sed是linux命令 sed -i "s/icomedev1.4.6.plist/icomedev1.4.9.plist/g" /Users/zhangrongwu/Desktop/ICome-IPA/iCome.html 但是运行在Mac中需要在-i后面添加 ""或者"_bak"用于备份文件 sed -i "_bak" "s/icomedev1.4.6.plist/icomedev1.4.9.plist/g" /Users/zhangrongwu/Desktop/ICome-IPA/iCome.htm
程序员不务正业
2018/06/14
1.4K0
Linux对文件中的特殊字符进行替换(单个文件与多个文件替换)
https://stackoverflow.com/questions/5800035/how-to-replace-nul-in-vi
小徐
2019/08/05
6.2K0
Linux对文件中的特殊字符进行替换(单个文件与多个文件替换)
用 Linux sed 命令替换智能引号
每个字母或字符,不管它是否印在你的键盘上,都有一个编码。字符编码可以用不同的方式表达,但对计算机来说,Unicode 序列 u2018 和 u2019 产生 ‘ 和 ’,而代码 u201c 和 u201d 产生 “ 和 ” 字符。知道这些“秘密”代码意味着你可以使用 sed 这样的命令以编程方式替换它们。任何版本的 sed 都可以,所以你可以使用 GNU sed 或 BSD sed,甚至是 Busybox sed。
用户8965210
2021/09/27
2.7K0
替换文件中的敏感信息
Long long time no see.『每日一坑』栏目又来啦! 今天我们来做一个现实中有可能会碰到的问题: 替换文件中的敏感信息 问题描述 假设我们有一份文件,文件中包含了很多个人信息。现在需要一份去除其中敏感信息的版本,将文件中所有手机号的4~7位和身份证号的6~15位用 * 替换。 (注意:有的身份证号是以X结尾) 示例 输入文件 张三 居住地:南京 身份证号:320101199909091234 手机号:13013013130 李四 居住地:上海 身份证号:31010120000101234X
Crossin先生
2018/04/17
1.9K0
点击加载更多

相似问题

使用sed替换文件中的字符串

10

使用sed替换文件中的字符串

20

替换所有捕获的组,但首先在sed中替换

11

使用sed替换文件中的内联字符串

111

如何使用sed替换所有文件中的字符串?

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文