|行頭に - bash

行の先頭にある | の意味は何ですか?

tr -d '?."!:,();' < manywords \

| tr 'A-Z' 'a-z' \

| tr ' ' '\n'

私が使用しているリソースではこれがうまくいくはずだと言いますが、実行すると予期しないトークンの近くで構文エラーが発生します | '

2
空白行を削除することに加えて、わかりやすいように継続行をインデントします(たとえば、4列)。
追加された 著者 Keith Thompson,

3 答え

構文エラーは、空の行によるものです。

tr -d '?."!:,();' < manywords \
| tr 'A-Z' 'a-z' \
| tr ' ' '\n'

うまくいくはずです。 \ は "このコマンドは次の行に続き"という意味です。

tr -d '?."!:,();' < manywords | tr 'A-Z' 'a-z' | tr ' ' '\n'

ただし、より読みやすい。

5
追加された

ラインの始まりではありません。前の行の最後にある \ は、次の改行を bashマニュアル

引用符で囲まれていないバックスラッシュ()はエスケープ文字です。それは   後続の次の文字のリテラル値。ただし例外があります。   の\ペアが現れ、バックスラッシュ自体が引用符で囲まれていない場合、\は行継続として扱われます   (つまり、          入力ストリームから削除され、効果的に無視されます)

あなたのコマンドは、

tr -d '?."!:,();' < manywords | tr 'A-Z' 'a-z' | tr ' ' '\n'

しかしあなたは余分な改行を追加したようです。

1
追加された