다음과 같은 예제 / etc / passwd 파일이 있습니다.
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
에 홈 폴더가있는 모든 사용자를 나열하려고합니다 /home/
.
나는 썼다
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
여기서 e.txt는 여기에 복사 한 텍스트입니다.
이스케이프 문자 인 백 슬래시에 문제가 있음을 이해하지만 한 줄의 명령으로 나열 할 수 있도록 어떻게 수정합니까?
고양이 e.txt | grep 홈 | cut -d ":"
—
Arpit Agarwal
모든 사용자가 1000의 UID를 가지기 때문에 약간 까다로울 수 있습니다.
—
StrongBad
@ArpitAgarwal
—
NieDzejkob
grep home e.txt | cut -d ":" -f 1
. UUOC 상을 축하합니다. 그러나 이것은 좋은 해결책이 아닙니다. 데몬의 이름을 따서 명명 된 별도의 사용자로 실행되는 서비스 "홈 백업"이있는 경우 어떻게합니까? 그것은 거짓 긍정입니다.
@Philippos re "파일 이름을 인수로 지정할 수있는 도구에 고양이와 파이프를 연결하는 것은 거의 의미가 없습니다."-일반적으로
—
David Spillett
cat > tool
왼쪽에서 오른쪽 흐름을 유지하여 선명도를 향상시킬 수 있기 때문에 이러한 명령 줄의 변형을 사용합니다. 파이프 체인의 입력 처리 출력. 그것은 이다 하지만 거의 항상 최소한 때문에, 덜 효율적. 또한 (바로 교체 관련 및 유용한 대화 형으로 매우 분명 실행 진행률 표시 줄을 추가하게 cat
하여 pv
그 설치된 경우).
cat
및 파이프 등의 도구awk
나sed
나처럼 그들이 인수로 파일 이름을 부여 할 수있다.