sed 相关问题

Sed(Stream EDitor)是POSIX环境的命令行编辑器。 Sed根据编辑脚本处理一个或多个文件,并将结果写入标准输出。它创建于贝尔实验室,自70年代中期以来一直存在。

在 sed 命令和范围地址中使用不同的分隔符

我在 shell 脚本中使用 sed 来编辑文件系统路径名。假设我想替换 /foo/酒吧 和 /巴兹/qux 然而,sed 的 s/// 命令使用正斜杠 / 作为分隔符。如果我这样做...

sed
回答 3 投票 0

在 Mac OS 中使用“grep”进行模式搜索然后替换的问题

SO 上有很多类似的帖子。但是,那里给出的答案对我不起作用。我使用的 Mac OS Monterey 版本为 12.6.5。 我正在搜索目录中的所有文件

回答 1 投票 0

从域或子域为 LDAP 自动创建 DC= 字段

通过 BASH 脚本,我会自动为 LDAP 域组件构建一个字符串,例如:DC=us、DC=earth、DC=com。但是,我不知道一个域可能有多少个子域组件。 例如: d...

回答 1 投票 0

sed:如何替换找到的模式的最后一位数字

同事们,找不到解决办法: 我有一个具有相同序列的文件: ..."TargetGroupArn": "randomsetishere-green/e23cf778ec867027", "Weight": 100 }, { "TargetGro...

回答 1 投票 0

sed:在某个位置插入一行

我只是环顾四周,但没有找到任何适合我的东西。 我想在其他行的顶部插入一个新行(基本上是一个 html 表格行)。 我只是环顾四周,但没有找到任何适合我的东西。 我想在其他行的顶部插入一个新行(基本上是一个 html 表格行)。<table id="tfhover" class="tftable" border="1"> <tr><th>HEADER1</th><th>HEADER2</th><th>HEADER3</th><th>HEADER4</th></tr> <tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td></tr> </table> 那么,有没有人可以建议我一个 sed cmd 来插入一个新的:<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td> 就在标题下方?谢谢! 首先,我们有一个包含以下几行的文件,名为 datafile.txt 1 some test lines here but not all lines contain nubers 3 and here is the last one 我们有一个 bash 变量$ADDED,其中包含要添加的行内容 ADDED="==This is the new line==" 因此,在第一行之后添加行 ADDED="==This is the new line==" < datafile.txt sed "1a \\ $ADDED " 结果: 1 some test lines here ==This is the new line== but not all lines contain nubers 3 and here is the last line 在所有以数字开头的行之后添加行 < datafile.txt sed "/^[0-9]/a \\ $ADDED " 结果: 1 some test lines here ==This is the new line== but not all lines contain nubers 3 and here is the last line ==This is the new line== 将行添加到开头,因此在第一行之前插入 < datafile.txt sed "1i \\ $ADDED " 结果 ==This is the new line== 1 some test lines here but not all lines contain nubers 3 and here is the last line 您可以“替换”行尾以添加新行 < datafile.txt sed "/all/s/$/\\ $ADDED/" 上面的示例通过替换在包含单词“all”的行后面添加行 1 some test lines here but not all lines contain nubers ==This is the new line== 3 and here is the last line 您甚至可以分割线并在之间添加 < datafile.txt sed "/all/s/\(.*lines \)\(.*\)/\1\\ $ADDED\\ \2/" 上面将搜索包含单词“all”的行,并将其拆分在单词“lines”之后。结果: 1 some test lines here but not all lines ==This is the new line== contain nubers 3 and here is the last line 最后一件事。使用正则表达式无法解析 HTML,请检查 sputnik 评论中的链接。 但是,这并不意味着不可能匹配 HTML 文件的某些部分。如果你知道你想要什么 match (而不是解析) - 你也可以安全地使用 HTML 的正则表达式。简单来说,这里很多人不知道解析和匹配之间的区别。 因此,如果您的 html 文件具有众所周知的结构,例如你确信你的html将一直是上述结构,你可以放心地写: <your_file.html sed "/^<tr><th>/a \\ <tr><td>new Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td> " 你会得到 <table id="tfhover" class="tftable" border="1"> <tr><th>HEADER1</th><th>HEADER2</th><th>HEADER3</th><th>HEADER4</th></tr> <tr><td>new Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td> <tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td></tr> </table> 仅仅因为我们不解析 html 代码,我们只是匹配一些线条图案.. 使用Perl ~$ perl -pe 'BEGIN {$str = q(<table id="tfhover" class="tftable" border="1">)}; \ s{\Q$str\E}{$&\n<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2<td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>};' file #OR ~$ perl -pe 'BEGIN {$str = q(<table id="tfhover" class="tftable" border="1">)}; \ s{(\Q$str\E)}{$1\n<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2<td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>};' file 使用 Raku(以前称为 Perl_6) ~$ raku -pe 'BEGIN my $str = Q[<table id="tfhover" class="tftable" border="1">]; \ s{$str} = "$/\n<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2<td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>";' file #OR ~$ raku -pe 'BEGIN my $str = Q[<table id="tfhover" class="tftable" border="1">]; \ s{($str)} = "$0\n<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2<td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>";' file 以上是用 Perl 和 Raku 编码的答案。在两种语言中,$str都被分配了一个单引号(即非插值)目标行,以插入到OP的第一行文本之后。两个答案都使用 \nnewtextline 插入新文本行(即 \n 已针对两种语言正确插入)。 在 Perl 中,s/// 运算符的 RHS(识别域)实际上是一个双引号字符串。因此,要禁用正则表达式插值,必须使用 \Q … \E 形式。请注意,Raku 需要 my 关键字,并且最好使用方括号。 在 Raku 中,Q 是最简单的引用结构:即使反斜杠会截断字符串,也不会被接受(如果你想转义内部反斜杠,请使用 q)。 对于每种语言的第一个答案,识别的字符串将替换为匹配变量,即 Perl 中的 $& 和 Raku 中的 $/。 对于每种语言的第二个答案,使用枚举捕获。在这两种语言中,()括号用于表示枚举捕获;请注意,Raku 中的捕获是从 $0 开始的。 示例输入: <table id="tfhover" class="tftable" border="1"> <tr><th>HEADER1</th><th>HEADER2</th><th>HEADER3</th><th>HEADER4</th></tr> <tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td></tr> </table> 示例输出(所有四个代码示例): <table id="tfhover" class="tftable" border="1"> <tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td> <tr><th>HEADER1</th><th>HEADER2</th><th>HEADER3</th><th>HEADER4</th></tr> <tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td></tr> </table> https://perldoc.perl.org/perlre https://perldoc.perl.org/functions/quotemeta https://docs.raku.org/language/regexes https://docs.raku.org/language/quoting

回答 2 投票 0

sed 将行添加到范围末尾或文件末尾

我正在尝试使用 sed 在范围末尾添加一个字符串。 $ 猫测试.fl 文件标题 第一个 1 第二个 2 第三个 3 第四个 4 第五 5 第六 6 第七 7 第八 8 九号 9 第一个1.1 第二个1.2 第三1.3

回答 1 投票 0

在 sed 或类似工具中删除 html 标签

我正在尝试从网页中获取表格的内容。我只需要内容,但不需要标签。我什至不需要“tr”或“td”,只需要内容。例如: 我想要...

回答 3 投票 0

sed/awk 命令匹配文件中的单词,然后替换下面的行

我有一个示例文件: 我需要 sed/awk 命令首先匹配文件 test.yaml 中的单词 (my-app),然后替换 -name: def 的值(value: 中的 1234),随后替换值 ...

回答 1 投票 0

如何让 sed 知道 git grep 的 -w 标志?

我认为使用以下代码,执行 git_grep_sed -w 模式替换之类的操作将匹配整个单词。不过,如果说,匹配的是if,它也会匹配fifa中的子串....

回答 1 投票 0

回答 5 投票 0

带正则表达式的 Sed 命令:“未终止的正则表达式”。正则表达式的最大长度?

我尝试使用很长的正则表达式执行 sed 命令 但我得到了错误 sed: 1: "/LOCK TABLES .(long_tab ...": 未终止的正则表达式 long_regex='/锁定表。(long_table_name_here...

回答 1 投票 0

需要使用sed更改json文件的值

我需要使用 sed 更改 JSON 文件的值, 我看到很多人建议使用 jq、python 或 Perl。 但我在容器内工作,我希望它尽可能简单,所以只能...

回答 5 投票 0

单行删除任何以数字开头且后面没有分隔符的行[关闭]

这个多行Python代码可以工作。能不能精简一点?谢谢。 temp_test_001 = ''' 测试1,2,3, 41 测试5、6、7、 8800 8800 8800 8800。 8800.0 8,800 测试9,10 测试11,12 '''。分裂(' ') 与开放(...

回答 2 投票 0

删除任何以数字开头且后面没有分隔符的行[关闭]

这个多行Python代码可以工作。能不能精简一点?谢谢。 temp_test_001 = ''' 测试1,2,3, 41 测试5、6、7、 8800 8800 8800 8800。 8800.0 8,800 测试9,10 测试11,12 '''。分裂(' ') 与开放(...

回答 2 投票 0

替换 Unix 中的模式

我想将文件中与“src=/icons”匹配的所有模式替换为“src=http://dashbaord.etrade.com/icons”。我尝试了 sed 命令,但它无法正常工作并出现错误。拜...

回答 1 投票 0

使用 sed 或 awk 查找并替换 JSON

所以我需要能够使用 sed 或 awk (最好在一行上)将值注入 JSON,并且我无法安装任何外部库来帮助我。 json 的一个示例类似于 {"versio...

回答 2 投票 0

如何在 sed 中处理 ANSI 转义序列?

带有 ASCII-art 徽标的文件因“rgb-黑色前景空间字符”而变得臃肿。 Vim 将它们显示为 ^[[38;2;0;0;0m ^[[0m 我可以让 sed 用“常规”空格字符替换它吗,并且......

回答 1 投票 0

将 sed 与 ? 一起使用(问号)特殊字符

我有一个受感染的网站,我正在尝试使用 sed 清除它。不幸的是,我无法逃脱网址中的问号,我真的被困在这里了。我在网上搜索过...

回答 1 投票 0

如何将值插入fastq文件中缺失的区域?

理解 fastq 文件,其中有 4 行重要内容。 以@开头的行包含序列标识符。 含有 DNA 序列的线。 以+(加号)开头的行表示开始...

回答 2 投票 0

Bash 脚本逻辑根据分隔符提取文件中跨多行的文本

在我的脚本中,我需要将文件 $CURFILEPATH 中的 TEXT('...') 内容存储到名为 $SRCTEXT 的 bash 变量中。 TEXT('...') 变量包含在包含 IBM i CLLE 的各种文件中

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.