cut
이 명령을 사용하여 파일에서 사용자 이름 및 로그인 셸 목록을 추출하려면 어떻게 해야 합니까 /etc/passwd
? 여기서 생성된 사용자 이름과 로그인 셸은 단일 공백으로 구분됩니다.
로그인 셸을 기본 키로, 사용자 이름을 보조 키로 사용하여 결과 목록을 알파벳 오름차순으로 정렬합니다. 새로 생성된 파일에 결과를 저장합니다 ~/usershells.txt
.
내가 시도한 명령은 다음과 같습니다.
cut -d /etc/passwd -k7 -k1 | sort > ~/usershells.txt
답변1
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2,2d -k 1,1d
그러면 사전 정렬을 사용하여 필드 2를 기본 키로, 필드 1을 보조 키로 정렬합니다.
열을 전환하려면 awk를 사용하세요.
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2,2d -k 1,1d | awk '{print $2,$1}'
다음을 얻으려면 awk를 사용하는 것이 좋습니다.
awk -F ":" '{print $7,$1}' /etc/passwd | sort -k 2,2d -k 1,1d
이것은 컷을 사용하지 않지만 컷 사용에 대한 요구 사항이 얼마나 어려운지 잘 모르겠습니다.
awk를 전혀 사용하고 싶지 않은 경우에도 열 순서를 바꿀 수 있습니다.
다음은 while 루프를 사용하여 읽는 예입니다.
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2,2d -k 1,1d | while read -r c1 c2;do echo "$c2 $c1";done
잘라내기 및 붙여넣기를 사용하는 또 다른 옵션:
paste <(cut -f7 -d: /etc/passwd) <(cut -f1 -d: /etc/passwd) | sort -k 2,2d -k 1,1d
또는 단일 공간이 꼭 필요한 경우:
paste -d " " <(cut -f7 -d: /etc/passwd) <(cut -f1 -d: /etc/passwd) | sort -k 2,2d -k 1,1d
> ~/usershells.txt를 사용하여 나열된 옵션을 파일로 리디렉션하세요.
물론 잘라내기 및 붙여넣기를 사용하여 원래 순서를 유지하고 셸에서 정렬할 수도 있습니다.
paste -d " " <(cut -f1 -d: /etc/passwd) <(cut -f7 -d: /etc/passwd) | sort -k 2,2d -k 1,1d > ~/usershells.txt
답변2
정렬을 위해서는 를 사용할 필요가 없으며 cut
, sort
with를 사용하면 됩니다.관로:
sort -t " " -k 7 /etc/password | sort -t " " -k 1
파이프라인 순서는 로그인 셸이 기본 키로 사용되고 사용자 이름이 보조 키로 사용되도록 보장합니다.
-t " "
구분자 로 사용됩니다 space
.
두 개의 열만 표시하려면 다음을 사용합니다 cut
(정렬 후).
sort -t " " -k 7 /etc/password | sort -t " " -k 1 | cut -f 1,7 -d:
마지막으로 출력을 파일에 저장할 수 있습니다 usershells.txt
.
sort -t " " -k 7 /etc/password | sort -t " " -k 1 | cut -f 1,7 -d: > ~/usershells.txt
기본 구분 기호가 다음과 같은 경우 사용할 :
수 있습니다.tr
Danny_l말하는:
tr ":" " " /etc/password | sort -t " " -k 7| sort -t " " -k 1 | cut -f 1,7 -d: > ~/usershells.txt
답변3
매개변수 f를 사용하면 필드를 선택할 수 있고 d는 구분 기호를 설정합니다.
cut -f 1,7 -d: /etc/passwd
답변4
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort > ~/usershells.txt