我正在尝试但能够理解sed
. 为什么我们需要它,它的目的是什么?
在这个\n
从文件中删除的解决方案中的示例,他使用:
sed ':a;N;$!ba;s/\n/ /g'
我无法理解标签。
这是一个简单的goto
. 您需要在脚本末尾声明一个带有:label
或不带标签的目标标签。b
还有条件跳转t
和T
.
在您的示例脚本中,“地址”条件$!
对于除最后一行之外的所有行都为真($
表示文件结尾,并!
否定条件)。因此,有一个循环将整个文件读入模式空间,然后进入循环之后的操作,该操作替换所有(内部)换行符(在某些方言中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
我同意“分支”是一个有点误导性的术语,但它有很长的历史;更好的术语可能是“跳转”或“转到”。
sed
关于分支出现在答案中的位置有很多问题,包括:
我敢肯定还有很多其他人。