问题标签 [ed]
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.
find - heredocs 如何与 xargs 一起使用?
背景
我希望在发送之前# TODO
从一些 python 源代码文件输出中删除任何注释。git archive
我希望通过将在各种 *nix 操作系统上运行的脚本来执行此操作,因此它应该尽可能符合 POSIX。
我知道find -print0
并且xargs -0
不在基本规范中,但它们似乎很常见,我可以很好地使用它们(除非存在更好的替代方案)。ed
由于sed -i
不在就地编辑的基本规范中,我正在使用它。假设下面的命令是从一个已经解压的 git 存档的目录中运行的。
我很高兴有一个整体的替代解决方案来# TODO
删除评论,但为了满足我的好奇心,我还想回答我在我提出的命令中面临的特定问题。
现有代码
预期结果
所有以“.py”结尾的文件都被删除了仅包含 TODO 注释或以 TODO 开头的行尾注释的完整行。
实际结果
(标准输出)
当前理论
我相信<< 'EOF'
heredoc 被应用于xargs
而不是ed
,我不知道如何解决这个问题。
bash - 如何将 2 变量插入 ed 命令参数?
我正在尝试在 bash 脚本中执行一个 while 循环,但是当我尝试在其参数中插入一个变量时,我不知道 ed (文本编辑器)发生了什么。如您所见,我也在使用循环,但问题似乎在于 ed 命令中使用了变量。
这是脚本代码(显然是 awk 和 sed 程序):
bash - 如何通过脚本将相同的文本添加到多个文件中?
我想要一种简单的方法来使用一个小脚本将相同的文本(例如“再见”或更多行)添加到一组文件中。我在脚本中尝试了一些东西ed
,vi
但它没有用。
编辑:我编辑这个评论更具体:
我有文件 c0001.gin c0002.gin ... 最多可以说 500。我需要在每个文件的末尾添加下一个文本:
我只想要一个脚本来做到这一点。
此外,这些文件位于名为“CALCS”的文件夹中,我想将每个文件移动到 CALCS 内的另一个文件夹,名为“001”的 c0001.gin,“002”的文件 c0002.gin 等等。
提前致谢
awk - 使用 sed 或 awk 在两个匹配模式之间插入行
我在 text.txt 中有如下行
每次 patten "end:" 匹配时,我想添加几行(让我们打个招呼)。但忽略以下模式“end:”的出现,直到“start:”模式再次匹配。
所需输出
xml - 在Unix中替换xml中的特定标签
我想替换特定值(不适用于所有元素)。这里所有人都有相同的 Background_color,但我不想只为特定的一个替换 Background_color。我们该如何实施?这只是一个示例代码。(我将在文件中有皮肤名称列表,我不应该为其替换 Background_color)
bash - 如何从 ed 命令中删除控制台输出?
我正在使用ed在文件中的特定行号处插入内容。这是我的ed命令的代码部分。
上面的代码工作正常,并将文本打印到指定行号的文件中。但是,每次运行代码时,我都会在控制台上获得输出。例如:
我认为这些数字代表文件 servertest 中的字符数。我意识到在运行代码之前我在未编辑的文件中有 1456 个字符,在运行代码之后有 1534 个字符。有没有办法我不能在控制台上显示这些数字?我尝试将输出定向到dev/null
但ed在最后一个 END 命令之后不允许任何字符。
vim - 删除vim中很长一行的单词之间的空格
如何使用删除单个长行中多个单词之间的空格vim
?
已经试过了:
和这方面的例子。
不工作。
我有一条线是这样的:
使用第一个解决方案中建议的确切代码,它只会删除意图(我用来在 Python 中构建如此长的字符串值的前 4 个空格)并且单词之间没有空格。
Visual Selection
- 我的意思是点击shift+v
一次选择整行。与 相同^v+$
。
无论有或没有 vs,我都无法在没有空格的情况下完全达到线。
linux - 希望 sed 有一个等效于 ed 方便的 j 命令
它一直困扰着我,sed
没有j
命令,就像ed
没有命令一样。
这个问题一般询问如何连接线,并且有很多很好的答案,其中许多具有其他工具,例如awk
和perl
。也有一些sed
解决方案,但它们都涉及使用s
命令从字面上编辑换行符,这是一种解决方案,由于各种原因让我觉得很笨拙。
现在,sed
还有一些与“保持”和“模式”空格有关的晦涩命令,我从来没有弄清楚如何使用。我一直假设 - BICBW - 保留空间是 sed 对j
命令的回答,只要我能弄清楚如何使用它。
所以我今天的问题——这既是一个知识分子问题,也是一个实际问题——是,有没有一种好的、安全、合理简洁的方法来做相当于
也就是说,对于包含 pattern 的每一行pat
,将其连接到下一行(也就是说,就像ed
我使用一样g/pat/j/
)。
正如我所说,这在某种程度上是一个智力问题。我知道如何使用其他工具连接行,或者通过在引用的文字换行符上使用sed
和命令。s
但在我看来,应该有更好的方法。
(或者也许我应该只获取一份副本sed.c
并输入正确的j
命令。)
bash - 如何防止 ed 打印匹配结果?
我ed
在 bash 脚本中使用来搜索文件;该/
命令将显示我不想要的内容。我试图重定向>/dev/null 2>&1
,但这对我不起作用。
文本文件foo.txt
:
bash脚本bar.sh
:
结果:
如何停止ed
打印匹配的行b
?
editor - ed - 引用控制字符?
如何在 unix ed(1) 中搜索控制字符?
例如
不起作用。\r 也不行。显然 sed(1)、awk(1) 和其他编辑器可以做到这一点,但是 ed 有一个非常有用的 line move (m) 命令,这是我在使用的 bash 脚本中所需要的。
我可以通过直接输入控制字符在脚本中完成我想要的操作(例如,在 vi 中用 Cv 转义,在 emacs 中用 Cq 转义),但这意味着二进制字符必须存在于我的其他可打印文本脚本中。
^M 实际上是字符 0x0d。