Linux: 명령 결합

Linux: 명령 결합

해당 문자가 포함된 모든 이름을 찾으려고 합니다 y. 다음으로 이 명령의 출력을 역순으로 정렬하고 출력을 새 파일에 쓰려고 합니다.

이게 내 코드야

grep -ioh '[y]' names | sort -fr | > newfile

답변1

-oGNU 옵션을 사용하면 grep유틸리티가 표현식과 일치하는 하위 문자열만 반환합니다. 표정이 [y]아까와 똑같 네요 y. 즉, grep문자 목록이 반환됩니다 y(그리고 Y대소문자를 구분하지 않는 일치를 사용하는 경우 -i).

또한 파이프 끝에 구문 오류가 있습니다. 마지막 |문자가 있으면 안 됩니다. 대신 리디렉션은 다음에서 직접 이루어져야 합니다(또는 sort옵션 및 옵션 매개변수로 대체되어야 함).-o newfilesort

파일 내용을 언급하지 않으셨으니 names다음 내용을 말씀드리겠습니다.생각하다한 줄에 하나씩 이름이 포함된 파일입니다.

해당 문자가 포함된 모든 줄을 얻으려면 y(대소문자 무시) 다음을 사용할 수 있습니다.

grep '[yY]' names

또는

grep -i 'y' names

그런 다음 대소문자를 무시하고 역순으로 정렬할 수 있습니다(어차피 대부분의 이름은 대문자로 시작한다고 생각하지만) sort -f -r.

grep '[yY]' names | sort -f -r -o newfile

또는

grep '[yY]' names | sort -f -r >newfile

이것에특별한이 경우 명령의 순서는 중요하지 않습니다.

sort -f -r names | grep '[yY]' >newfile

다음과 같이 쓸 수도 있습니다.

( sort -f -r | grep '[yY]' ) <names >newfile

또는

<names ( grep '[yY]' | sort -f -r ) >newfile

또는 동일한 주제에 대한 다른 많은 변형 중 하나입니다.

관련 정보