|
在一行的开头是什么意思?
tr -d '?."!:,();' < manywords \
| tr 'A-Z' 'a-z' \
| tr ' ' '\n'
我正在使用的资源说这应该可行但是当我运行它时,我得到syntax error near unexpected token
|'`
答案 0 :(得分:6)
这是一个pipe。反斜杠是一个行继续符。
问题可能是由于空白行。试试这个:
tr -d '?."!:,();' < manywords \
| tr 'A-Z' 'a-z' \
| tr ' ' '\n'
或者你可以把它全部写在一行:
tr -d '?."!:,();' < manywords | tr 'A-Z' 'a-z' | tr ' ' '\n'
答案 1 :(得分:5)
语法错误是由空行引起的。
tr -d '?."!:,();' < manywords \
| tr 'A-Z' 'a-z' \
| tr ' ' '\n'
应该有效。 \
表示“此命令在下一行继续”,所以这只是
tr -d '?."!:,();' < manywords | tr 'A-Z' 'a-z' | tr ' ' '\n'
除了更具可读性。
答案 2 :(得分:1)
不应该有一条线的开头。前一行末尾的\
表示在处理过程中应忽略以下换行符 - 来自bash manual:
非引用的反斜杠()是转义字符。它保留了 后面的下一个字符的文字值,但有例外 的。如果出现\对,并且反斜杠本身不引用,则将\视为行继续 (也就是说 从输入流中删除并有效忽略)
您的命令应该在功能上等同于
tr -d '?."!:,();' < manywords | tr 'A-Z' 'a-z' | tr ' ' '\n'
但您似乎添加了额外的换行符。