问题标签 [gnu-sed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xml - 如何将文件的多行内容放在 在 XML 文件中使用 sed/awk?
我有这个文件:
我想把它改成——
我用过这个,它可以替换之间<theme> </theme>的所有内容SOMETEXT,
但我想用第二个文件的内容替换 SOMETEXT 。我怎样才能做到这一点?
bash - 使用 sed 查找和替换多行字符串
我有一个包含以下数字的输入文件
我有一个目标 txt 文件
使用 sed 我想用输入文件中的第一个条目替换目标文件中 Angle 条目的第一个实例,用输入文件的第二个条目替换 Angle 的第二个条目,依此类推......
预期输出:
这是我设法写的,但我没有得到预期的输出
你能帮我改进剧本吗?
谢谢!
awk - 根据公共字符串的出现重新索引两位数字字符串
我有一个urlwatch .yaml具有这种格式的文件:
我需要根据name: . 在此示例中,第一次和第二次出现的name: 后面是正确的索引号,但第三次和第四次不是。
在上面的示例中,第三次和第四次出现的name: 索引号将重新索引到03_文本04_字符串之前。即:一个两位数的索引号和一个下划线。
此外,此字符串的某些实例#name: 不应计入重新索引。(它们已被注释掉,因此这些行不会被 执行urlwatch)
我尝试使用 sed 但无法根据字符串的出现生成索引号。我没有 GNU sed,但如果这是唯一的方法,我可以安装。
windows - 仅替换字符串中管道字符的第一次出现
我需要在带有 sed 的管道分隔的 csv 文件的标题行末尾删除一个额外的管道字符。我要查找的文字字符串是 COLNAME|
在 GCP Windows 服务器上工作。我正在尝试使用的命令:
"C:\Program Files (x86)\GnuWin32\bin\sed.exe" sed '0,/COLNAME"|"/s//COLNAME/' 文件名
返回输出... sed.exe: -e expression #1, char 3: unterminated `s' command
我是 sed 的新手,并且一直在使用 s 命令一段时间,但似乎无法获得正确的语法。
关于如何做到这一点的任何建议?
macos - 如何在文件中的任何 `{` 和 `:` 字符中添加换行符
我想将给定的文本文件(通常在 macOS 或 Unix 上)复制到标准输出,其中任何{和:字符都添加了换行符。
我试过
仅用于大括号字符,但这似乎不起作用。
我需要为此安装 sed 的 GNU 版本吗?如果是这样,我怎样才能一次性为两个字符添加 {换行符: ?
centos - 使用 sed 删除 nginx 配置位置部分
在我的大多数 nginx 配置文件中,我有以下几行:
如果存在,我想删除以下块:
使用 regex101.com 我想出了以下正则表达式来“匹配”该块:
regex101 代码生成器生成以下代码:
但它不会产生任何输出。
如果我想在给定的配置文件中删除该配置部分,我该如何实现这一点,比如说 name myhost.localhost.conf?
sed 版本:
sed (GNU sed) 4.2.2
sed - -i 不带参数:是 GNU sed --posix 选项被窃听还是 BSD sed 不符合 POSIX?
这主要是这里出现的一个好奇问题。
从 GNU sed 4.8 的手册页我读到
所以我明白,如果像下面这样的代码有效,这意味着POSIX 允许-i 没有参数:
另一方面,相同的代码(带有或不带有--posix)对于 MacOS 的 BSD sed 不起作用,因为该版本需要-i后跟一个参数。
我只能看到两种相互排斥的可能性:
- GNU sed 的
--posix选项允许的不仅仅是 POSIX,这意味着它存在错误并需要错误报告 - BSD sed 不符合 POSIX。
真相是什么?
windows - GNU sed 4.2.1 匹配第二次出现
使用此命令,我试图在 M502 的两个模式和 M502 之后的第二行之间插入 M09,看起来像 X41.5Y251.5T201。
具体来说,我试图在最后一行之前插入 M09。
结果:
应该:
我正在尝试将最后一行与 匹配\(.*\)T\([0-9]\+\),但这会选择第二行。如何让 sed 忽略此表达式的第一个匹配项?
我强调我可能有数量不足的此类文本块,我需要为每个文本块插入 M09。
xml - 如何使用 sed 从块中删除重复的行
假设我们有一个行块,如下所示:
例如,这里的段 2 有需要删除的重复项(排序在这里无关紧要)。那么现在如何绑定 sed 以仅从段 2 中删除重复项。在此示例中,片段 2 是第二个片段,可能并非所有可能出现的情况都是如此,因为它也可能是子集的子集。
我对此的想法是使用标签,从命令开始和结束gsed -ni 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'
windows - 在每个多行范围之前插入带有 SED 的行
如何在每个多行范围块之前插入一行并在 Windows 上的 gnu sed 中缩进块?这些文件包含许多以 ``` 开头和结尾的不同长度的代码块。使用单线模式对许多类似问题的答案不使用范围。有两个类似的问题:在文本范围下方插入行 sed和sed: Appending after a block。
此代码根据需要缩进所有代码块:
sed '/```/,/```$/ s/\(.*\)/ \1/' test.md
我不明白如何===在每个代码块之前插入行,但我知道{}在插入行后处理块需要分组。上面的问题似乎更复杂,需要缓冲区,但这个文件应该能够在没有缓冲区的情况下按顺序处理。
我希望这样的尝试应该与组之前的换行细节一起使用:
sed '/```/,/```$/ {s/\(.*\)/ \1/}' test.md
测试.md
必需的