2011-11-13 3 views
2

|은 줄의 시작 부분에서 무엇을 의미합니까?| 줄의 처음에 - bash

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

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

| tr ' ' '\n' 

내가 사용 자원이 작동합니다 있다고하지만 난 그것을 실행할 때, 나는 syntax error near unexpected token를 얻을 수 | '`

+0

빈 줄을 제거하는 것 외에도 가독성을 높이기 위해 연속 줄을 들여 쓰겠습니다 (예 : 4 줄). –

답변

5

구문 오류가 빈 줄 예정이다.

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

. \는 "이 명령은 다음 줄에 계속"을 의미한다, 그래서 이것은 단지

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

더 읽기를 제외하고있다.

6

그것은 pipe입니다. 백 슬래시는 줄 연속 문자입니다.

문제는 아마도 빈 줄 때문일 수 있습니다. 대신이 시도 :

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

이 또는 당신이 한 줄에 모두 쓸 수있다 :

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

줄의 시작이 아닙니다. 이전 라인의 끝에있는 \ 다음 줄 바꿈 처리에서 무시해야 함을 나타냅니다 - bash manual에서 :

비 인용 백 슬래시() 이스케이프 문자입니다. 뒤에 오는 문자의 리터럴 값을 보존하며 예외는 입니다. \ 쌍을 표시하고, 백 슬래시 인용 그 자체 인 경우, \는 행 계속 로 처리됩니다 (즉,이 입력 스트림에서 제거 하고 효과적으로 무시)

당신의 명령은 기능적이어야한다

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

하지만 당신은 것에 해당 여분의 줄 바꿈을 추가합니다.

관련 문제