gpt4 book ai didi

linux - 如何学习 Linux 中的 sed 分支

转载 作者:可可西里 更新时间:2023-11-01 11:49:52 24 4
gpt4 key购买 nike

我正在尝试但能够理解 sed 中的分支。为什么我们需要它,它解决了什么目的?

在这个从文件中删除 \n 的解决方案中,他使用了:

sed ':a;N;$!ba;s/\n//g'

我无法理解标签。

最佳答案

这是一个简单的goto。您需要在脚本末尾使用 :label 或不带标签的 b 声明目标标签。还有条件跳转 tT

在您的示例脚本中,“地址”条件 $! 对于除最后一行以外的所有行都为真($ 表示文件结尾,而 ! 否定条件)。因此,有一个循环将整个文件读入模式空间,然后进入循环之后的操作,该操作替换所有(内部)换行符(在 sed 的某些方言中)。

# declare label 'a'
:a
# append next input line to pattern space
N
# loop back to 'a' unless at end of file
$!ba
# substitute all newlines in pattern space
s/\n/ /g
# fall through to end: print the pattern space

我同意“分支”是一个有点误导的术语,但它有很长的历史;一个更好的术语可能是“跳”或“去”。

关于linux - 如何学习 Linux 中的 sed 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com