问题标签 [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.

0 投票
4 回答
87 浏览

sed - GNU sed 在附加文本时指定结束位置

我想sed在匹配模式时做两件事:

  1. 用字符串替换模式
  2. 在此行之后附加另一个字符串

比如一个文本文件中的原始内容是:

我想替换123到并在该行之后XXX追加:YYY

我试图这样做sed '/123/{s/123/XXX;a\YYY\}',但它给出了一个错误:Unmatched "{"

似乎该命令a将其后的所有字符视为要附加的文本。那么我怎样才能知道append 文本a的结束位置呢?

0 投票
3 回答
463 浏览

bash - sed 命令不识别撇号

在我的 bash 脚本中,我试图用 csv 文件中的两个撇号('')替换所有撇号('),以便将其提交到 postgres 数据库。如您所知,postgres 查询中的所有单引号都需要用撇号转义。

我不能在查询中的变量周围使用双引号,因为它们也有双引号。因此,除了使用 sed 进行毯子替换之外,没有简单的方法。我尝试了以下方法,但无济于事:

有人对我如何使它起作用有想法吗?

0 投票
1 回答
131 浏览

bash - GNU sed、^ 和 $ 与 | 当第一个/最后一个字符匹配时

当进行包含类似^|.REGEXP 的替换时,如果第一个字符匹配,则 sed 与模式空间开头的空字符串不匹配。如果最后一个字符匹配,它也不匹配结尾。这是为什么?

以下是一些123用作输入的示例(带有-r选项):

使用\`而不是^.
我试过 GNU sed 版本 4.2.1 和 4.2.2

在线尝试!

0 投票
1 回答
1332 浏览

sed - 为什么“sed -n -i”会删除现有文件内容?

运行 Fedora 25 服务器版。sed --version给了我sed (GNU sed) 4.2.2通常的版权和联系信息。我创建了一个文本文件sudo vi ./potential_sed_bug。Vi 将这个文件的内容(:set list启用)显示为:

然后我运行以下命令:

sudo sed -n -i.bak /please/a\testing ./potential_sed_bug

在我们讨论结果之前;这是sed 手册页的内容:

-n, --quiet, --silent 禁止自动打印模式空间

-i[SUFFIX], --in-place[=SUFFIX] 就地编辑文件(如果提供扩展名,则进行备份)。默认操作模式是断开符号链接和硬链接。这可以通过 --follow-symlinks 和 --copy 进行更改。

我还查看了其他 sed 命令参考以了解如何附加 sed。根据我对我所做研究的理解;生成的文件内容应为:

但是,运行sudo cat ./potential_sed_bug会给我以下输出:

鉴于这种差异,我对我运行的命令的理解是否不正确,或者 sed/环境是否存在错误?

0 投票
2 回答
36 浏览

bash - sed 在第 N 次出现后追加文本

我有以下脚本的模板,我需要PARAM为每种情况插入不同的值。

我刚刚找到了一个如何为第一种情况插入值的示例PARAM

但是对于案例 2 和案例 3,我该怎么做呢?

0 投票
3 回答
82198 浏览

bash - sed 给出:sed:无法读取:没有这样的文件或目录

我有以下bash脚本,它对找到的每个图像重复。它需要遍历所有htmlcssjs文件,并替换该文件中所有出现的图像。

但是,当我运行脚本时sed

sed: can't read : No such file or directory

在 StackOverflow 上我发现sed: can't read : No such file or directory但我已经引用了{}

当我回显sed命令并在命令行上手动执行它时,没有错误。

我在 Raspbian GNU/Linux 8.0 (jessie) 上使用 GNU sed v4.2.2

有人看到这里可能出了什么问题吗?

0 投票
4 回答
201 浏览

sed - sed :在特定数量的空格而不是字符后添加换行符

我想在 48 个空格后在我的 txt 文件中添加换行符。

这是文本行

我想在每行(48 行)中有 48 列(像素值)。

我试过这个:

但这对我不起作用,因为这会在 48 个字符后添加换行符,问题是像素值具有不同的位数(1、2 和 3 位数)。

我怎样才能做到这一点 ?

0 投票
1 回答
1282 浏览

regex - 使用 GNU sed (macOS) 4.4 将一个捕获组替换为另一个

我查看了其他一些外围问题,但无法找到解决我的问题的方法,所以如果这与我错过的内容重复,我很抱歉。

基本上,我有以下 GNU sed 命令:

这应该用该行的最后一个单词替换一行的第一个单词。

第一个正则表达式^(\w)+效果很好,并且匹配每行的第一个单词。问题是该命令将第一个单词替换为文字字符串(w)+$

我试图逃避反斜杠、括号、运算符,但我没有运气让正则表达式在命令的输出部分工作。

可以使用正则表达式捕获组来替换不同的正则表达式捕获组吗?什么需要转义,或者需要使用什么替代语法?

笔记

我在 macOS 上使用来自 brew installed coreutils 的 GNU sed,因此这个问题的答案可能不适用于其他版本的 sed,例如 macOS 上的本机 BSD。

0 投票
2 回答
207 浏览

macos - 如何在 MacOS 上将尖括号中的字符串转换为大写?

我在 MacOS 10.12 中工作,我有 100 个文件,例如:

我一直在尝试将 <> 中的所有项目转换为大写,以查看文件如下所示:

我尝试使用:

我也尝试过使用 gsed (自制):

但我得到的只是文件本身的内容到标准输出。

我该怎么做呢?

最亲切的问候!

0 投票
3 回答
84 浏览

sed - sed:记住第二个表达式中的捕获

我试图找到捕获模式的出现并在下一行之前添加捕获的模式。

例如:

预期输出:

这是我所拥有的:

我该如何Shape {替换DEF tank Shape {

谢谢

燃气轮机