私は試していますが、 のブランチを理解できました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
?そして、他にもたくさんいると思います。