
해당 문자가 포함된 모든 이름을 찾으려고 합니다 y
. 다음으로 이 명령의 출력을 역순으로 정렬하고 출력을 새 파일에 쓰려고 합니다.
이게 내 코드야
grep -ioh '[y]' names | sort -fr | > newfile
답변1
-o
GNU 옵션을 사용하면 grep
유틸리티가 표현식과 일치하는 하위 문자열만 반환합니다. 표정이 [y]
아까와 똑같 네요 y
. 즉, grep
문자 목록이 반환됩니다 y
(그리고 Y
대소문자를 구분하지 않는 일치를 사용하는 경우 -i
).
또한 파이프 끝에 구문 오류가 있습니다. 마지막 |
문자가 있으면 안 됩니다. 대신 리디렉션은 다음에서 직접 이루어져야 합니다(또는 sort
옵션 및 옵션 매개변수로 대체되어야 함).-o newfile
sort
파일 내용을 언급하지 않으셨으니 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
또는 동일한 주제에 대한 다른 많은 변형 중 하나입니다.