问题标签 [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 投票
9 回答
8079 浏览

shell - 文件中的 Shell 脚本编号行

我需要找到一种更快的方法来使用 awk 和 sed 等工具以特定方式对文件中的行进行编号。我需要以这种方式对每行的第一个字符进行编号:1,2,3,1,2,3,1,2,3 等。

例如,如果输入是这样的:

输出需要如下所示:

这是我所拥有的一部分。$lines 是数据文件中的行数除以 3。因此,对于 21000 行的文件,我处理此循环 7000 次。

基本上,这一次抓取 3 行,对它们进行编号,然后添加到输出文件中。它很慢......然后一些!我不知道另一种更快的方法来做到这一点......有什么想法吗?

0 投票
7 回答
4680 浏览

regex - 如何快速找到与正则表达式匹配的文件的第一行?

我想在 Perl 脚本中使用正则表达式在文件中搜索一行。

假设它在安装了 grep 的系统中,最好:

  • grep通过open()命令调用外部
  • open()直接文件并使用while循环和if ($line =~ m/regex/)
0 投票
5 回答
85192 浏览

python - Perl、Python、AWK 和 sed 有什么区别?

它们之间的主要区别是什么?在哪些典型场景中使用每种语言更好?

0 投票
3 回答
1691 浏览

linux - 如何用脚本进行多行搜索和替换?

我正在尝试替换 Python 源文件中的每个多行导入。所以,源代码就像

我想得到类似的东西

我尝试使用 sed,但它看起来不支持右括号的非贪婪匹配,所以它“吃掉”第二个导入.. :(
任何提示?这对 sed 来说是不可能的吗?我应该尝试使用其他工具吗?

0 投票
2 回答
6663 浏览

bash - 如果数字并不总是相同,如何在多个文件中增加一个数字?

我有几个包含这一行的文件

我想在所有文件中增加 X 。

如果 X 在文件之间是恒定的,我可以有一个 bash 脚本循环文件并执行 ($1 包含以前的版本号,$2 是新版本号,即 $1 + 1) :

现在,如果文件之间的版本号不同,我该怎么办?

用 sed 可以吗?

我应该使用其他工具吗?

0 投票
5 回答
10549 浏览

bash - 一次性填充文件中的占位符

我有一个带有占位符字符串的骨架文本文件:

等等。占位符的特定“形式”无关紧要——我可以将它们更改为最适合特定实现的任何形式。

我有一个 bash 脚本,我知道占位符的值,我需要生成一个新文件,将占位符替换为值。

我可以使用 sed 多次执行此操作,但这并不有趣。我不想使用 Perl。我只想使用 textutils 和 bash 本身。

一次性完成我想做的事情的最佳方法是什么?

0 投票
14 回答
346405 浏览

string - 为 sed 替换模式转义字符串

在我的 bash 脚本中,我有一个外部(从用户接收)字符串,我应该在 sed 模式中使用它。

如何转义字符串,以便将其作为文字替换$REPLACE安全地接受?sed

注意:KEYWORD是一个没有匹配项等的哑子字符串。它不是由用户提供的。

0 投票
5 回答
1400 浏览

windows - Vista中的sed - 如何删除之间的所有符号?

我有一个 bat 文件,我应该用它来删除一个文件的一部分并保存到另一个文件中。我需要删除文本“[aaa bbb]”和“[ccc ddd]”之间的所有符号。那就是如果我有文字:

我应该有输出:

谢谢

编辑:我想澄清这个问题。我应该删除marker1和marker2之间的所有符号。Marker1 和 marker2 只是一些单词或文本的一部分,而不是强制性的行。例如我会有:

如果我想删除 [aaa bbb] 和 [www yyy] 之间的文本,我应该有输出:

0 投票
3 回答
3979 浏览

windows - 用于检测和删除文件中的文本的 Windows 命令

我有一个 ascii 文件,其中某处是行:BEGIN,稍后在行:END

我希望能够从 Windows 中的命令行调用中删除这两行以及介于两者之间的所有内容。这需要完全自动化。

编辑:请参阅Vista 中的 sed - 如何删除之间的所有符号?有关如何使用 sed 执行此操作的详细信息(cygwin 已 sed)。

编辑:我发现 SED 可以工作,但是当我将输出传输到文件时,回车符已被删除。我怎样才能保留这些?使用这个 sed 正则表达式:

/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/{ /^GlobalSection(TeamFoundationVersionControl) = preSolution$/!{ /^EndGlobalSection$/!d } }

.. 开始部分是“GlobalSection(TeamFoundationVersionControl) = preSolution”,结束部分是“EndGlobalSection”。我也想删除这些行。

编辑:我现在为 sed 使用更简单的东西:

/^GlobalSection(TeamFoundationVersionControl) = preSolution$/,/^EndGlobalSection$/d

换行仍然是一个问题

0 投票
3 回答
732 浏览

bash - maildir 标头问题

我有以下 bash 脚本来更新 maildir 文件的 mtimes:

该脚本一直运行良好,具有如下标准标头:

交货日期为 2007 年。如果我触摸该文件以使文件日期从今天开始,然后运行我的脚本,则文件日期将恢复为接收日期。

但是,当尝试在具有以下标题的电子邮件上运行我的脚本时:

日期显然没有恢复。我看不出标题以任何方式明显不同。我需要重置 mtimes,因为许多邮件客户端使用文件时间显示为收到的时间。我的脚本已经处理了超过 3000 封电子邮件,确保所有客户端在移动服务器和所有具有相同日期的文件后以正确的顺序显示电子邮件,但由于某种原因,它不适用于特定的电子邮件。我是否在脚本中留下了一些明显的东西?

编辑:日期显然是从脚本中恢复的,但是无论脚本将日期设置为什么,依赖 mtimes 的客户端都不会显示此消息。权限相同,布局和文件名格式也相同。以下是来自 ls -la 的帖子

无法正确显示的文件是倒数第二个。有什么方法可以调试为什么会发生这种情况?