需要帮助在 macOS 上使用 sed 在两次连续匹配后插入文本 [关闭]

     2023-03-15     114

关键词:

【中文标题】需要帮助在 macOS 上使用 sed 在两次连续匹配后插入文本 [关闭]【英文标题】:Need help inserting text AFTER two consecutive matches using sed on macOS [closed] 【发布时间】:2021-11-13 13:44:37 【问题描述】:

如何使用 sed 在文件中的两个连续匹配后插入文本。这可能吗?如果是,我该怎么做?

我的文件:

abcdef()K
.xyz 1
('I want to add text here')

请注意,.xyz 将是相同的,但它可以是 1 或 2 或 3 或任何其他数字。但是 .xyz 肯定会在 abcdef()K 之下。我想在 .xyz 部分之后添加文本。

请帮助大家。谢谢。

【问题讨论】:

perl -0777 -pE 's/^(abcdef\(\)\R\.xyz.*\R?)/\1(your text here)\n/mg' file 【参考方案1】:

你可以使用这个 perl:

perl -0777 -pE 's/^(abcdef\(\)K\R\.xyz.*\R?)/\1(your text here)\n/mg' file

或者这个 awk:

awk -v ins="(your text)" '/abcdef()K/f=1; print; next
f && /\.xyz.*/f=0; print; print ins; next
f=0; print' file

【讨论】:

【参考方案2】:

如果.xyz [0-9] 是常量并且始终位于第一个匹配项的下一行,那么您可以在新行后面附加sed

$ sed '/\.xyz [0-9]*/a New Text' input_file
abcdef()K
.xyz 1
New Text

否则,你可以匹配第一行,如果第一行匹配,则添加一个条件替换第二行的匹配,替换它自己,跳转到新行并附加新文本。

sed '/a.*()K/ N;s/\.xyz [0-9]*/&\nNew Text/' input_file
abcdef()K
.xyz 1
New Text

【讨论】:

我可以在 mac 上执行此操作吗? mac 上的 sed 要求您添加 a\ 并在下一行添加文本。这仅找到 .xyz 先生的匹配项。我也想匹配 abcdef()K。 @Mtoklitz113 我们追加的第一个命令应该可以工作。第二个可能不是换行的原因,可以试试sed '/a.*()K/ N;s/\.xyz [0-9]*/&'$'\nNew Text/'或者sed '/a.*()K/ N;s/\.xyz [0-9]*/&\\\nNew Text/' 我在使用第二个选项时出现“替代命令中的错误标志”错误。 @Mtoklitz113 我的命令在 GNU sed 上进行了测试,我无法复制您的错误标志问题。你的 Mac 上安装了 gsed 吗?【参考方案3】:

这可能对你有用(GNU sed):

sed -e '/abcdef()K/!b' -e ':a;n;/\.xyz/!ba' -e 'a new text added' file

如果一行不包含abcdef()K bail out。

打印当前行并获取下一行。

如果当前行不包含.xyz,重复上述操作。

否则,将new text added 附加到当前行。


sed -e '/abcdef()K/!b' -e ':a' -e 'n' -e '/\.xyz/!ba' -e 'a new text added' file

或者:

cat <<\! | sed -f - file
/abcdef()K/!b
:a
n
/\.xyz/!ba
a new text added
!

【讨论】:

我用的是 mac 先生。它可以在 Mac 上运行吗? @Mtoklitz113 我相信是这样,但您可能需要再分两个步骤,请参阅编辑。 我收到错误 sed: -e: No such file or directory 先生。我该怎么办? @Mtoklitz113 您可以将命令放在文件中或使用第二种选择。 potong 的 sed 需要 GNU sed。 Mac 只安装了 bsd sed。您可以使用 brew 或 macports 安装 GNU sed。

我需要帮助使用 Sed 向文件添加标题

】我需要帮助使用Sed向文件添加标题【英文标题】:IneedassistanceaddingaheadertoafilewithSed【发布时间】:2021-12-2408:26:27【问题描述】:我正在寻找一个sed唯一的命令来在文件开头添加一个新行,其中包含标题信息-排名、标题、系统... 查看详情

sed 在 MacOS 上的“未定义标签”

】sed在MacOS上的“未定义标签”【英文标题】:sed"undefinedlabel"onMacOS【发布时间】:2012-08-2914:52:19【问题描述】:我最近发现这个简单的sed表达式在Linux或Cygwin下运行良好,但在Mac上失败并出现“未定义标签”错误:$sed\'/S... 查看详情

在 macOS 上使用 Ninja 进行 CMake GUI

】在macOS上使用Ninja进行CMakeGUI【英文标题】:CMakeGUIwithNinjaonmacOS【发布时间】:2018-09-0611:58:22【问题描述】:我正在尝试使用CMakeGUI创建Ninja构建文件。我尝试在macOS上使用Brew手动安装Ninja。两次我都确保ninja在PATH上可用,但CMakeG... 查看详情

如何仅列出在两次提交之间更改的文件的名称

...想查看两次提交之间更改的文件列表-从SHA1到SHA2。我应该使用什么命令?【问题讨论】:对于提交及其父:***.com/questions/424071/…您应该更改问题标题... 查看详情

如何在 MacOS 上安装 MySQLi

...:03【问题描述】:我找不到有关在Mac上安装MySQLi的说明。需要说明的是,MySQL是最新的,我正在运行PHP5。如何安装它?我什至从哪里得到它?谢谢你的帮助。我将向回答此问题的人投赞成票并打勾!【问题讨论】:【参考方案1... 查看详情

在mac上使用sed删除文件中第一次出现的字符串[重复]

】在mac上使用sed删除文件中第一次出现的字符串[重复]【英文标题】:Removingfirstoccurrenceofastringinafilewithsedonmac[duplicate]【发布时间】:2019-04-1711:36:12【问题描述】:来自this我找到了该命令,它无需任何命令替换即可工作。但是如... 查看详情

为啥在两次调用 promise 时 RSVP Deferred 会产生错误

】为啥在两次调用promise时RSVPDeferred会产生错误【英文标题】:WhyRSVPDeferredproduceserrorwhenpromiseiscalledtwice为什么在两次调用promise时RSVPDeferred会产生错误【发布时间】:2018-07-1700:52:41【问题描述】:为什么在两次调用promise时RSVPDeferre... 查看详情

使用 sed 在 Mac OS X 上删除回车

...以执行:sed-i\'s/\\r//g\'<file>但同样的不适用于MacOSX。需要在前面加上$之类的:sed-i$\'s/\\r//\'<file>而且“g”也不需要。为什么会这样?【问题讨论 查看详情

sed 命令复制替换两次

...中HereIlayinthedepthsofhellwaitingtoberescuedbymycharmingwarrior.一旦我使用sed命令替换sed-i"s/hell/HELL/p"./temp.txt这是 查看详情

我对 bash (macOS) 中的“sed”语句有疑问

...间】:2021-03-1215:27:05【问题描述】:我刚刚开始在macOS中使用(bash/zsh)shell脚本。我遇到了“sed”语句的问题:我设置了以下变量var1=MACBOOKPRO执行以下终端命令时:echo$var1|sed--\ 查看详情

无法在 MacOS 上安装 Colorls

...:2021-12-2817:03:21【问题描述】:我正在尝试将Colorls安装在两台单独的MacBook上(一台BigSur和另一台Monterey),但如果我运行:sudogeminstallcolorls我收到此错误:ERROR:Errorinstallingcolorls:ERROR:Failedtobuild 查看详情

我是不是需要在 Django 的整体布局和标题上使用两次“加载静态”?

】我是不是需要在Django的整体布局和标题上使用两次“加载静态”?【英文标题】:DoIneedtouse\'loadstatic\'twiceonoveralllayoutandheaderinDjango?我是否需要在Django的整体布局和标题上使用两次“加载静态”?【发布时间】:2018-11-1204:50:22... 查看详情

使用sed修剪stdout的开头(代码片段)

...。问题是输出如下所示:path:/Volumes/StorageA/FileServer/而我需要它看起来像这样/Volumes/StorageA/FileServer/所以白色空间需要被转义,并且行的开头有路径:并且需要修剪空白区域。我现在一直在用sed乱搞几个小时,但我只是不知道它在... 查看详情

macos:sed-i报错:sed:1:“xxxxx“:extracharactersattheendofpcommand(代码片段)

...是一点问题没有的。sed-i"s/find/replace/g"file.txt但是在macOS下却报错了sed:1:“file.txt”:extracharactersattheendofpcommand在stackoverflow上找到这个帖子《sedcommandwith-ioption(in-placeediting)worksfineonUbuntubutnotMac》1,总算知道了原因:macOS与linux还是... 查看详情

saltsyndic配置

SaltSyndic是一个salt代理,当master需要管理大量的机器时,可以使用Syndic来帮助处理任务。使用SaltSyndic需要满足以下要求:1、SaltSyndic必须运行在一个master上,syndic的配置是在master上完成。2、Syndic要连到另一个master上,且比他等级... 查看详情

如何通过socket编程在两台机器之间发送文件?

...programming?【发布时间】:2009-05-0714:58:13【问题描述】:我需要将目录中的所有文件发送到不同的机器,目录内部可能包含子目录。在这方面有任何帮助吗?还有一个疑问是:我还听说我们可以使用FTP发送文件,如果可以的话,这... 查看详情

如何使用 M1 在 MacOS 上安装 h5py(Keras 需要)?

】如何使用M1在MacOS上安装h5py(Keras需要)?【英文标题】:Howtoinstallh5py(neededforKeras)onMacOSwithM1?【发布时间】:2021-06-1820:17:56【问题描述】:我有一台M1MacBook。我已经使用pyenv安装了python3.9.1,并且有pip3版本21.0.1。我已经通过brewi... 查看详情

SwiftUI:如何在 macOS 11 上使用 NSSearchToolBarItem?

...们在视频中11:32在Swift中介绍了NSSearchToolBarItem。这正是我需要做的,但是如何在SwiftUI中将此搜索添加到 查看详情