私は試していますが、 のブランチを理解できました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回答のどこにブランチが表示されるかについては、次のような非常に多くの質問があります。
sed行の最初の部分で区切り記号をグローバルに置き換えますか?sed: パターンを保持して行を並べ替えますか?sed?そして、他にもたくさんいると思います。