파일의 일부 내용 가져오기

파일의 일부 내용 가져오기

그래서 저는 이 문제를 해결할 수 있는 도구가 있다는 것을 들어본 적이 있기 때문에 존재한다는 것을 알고 있지만 그것이 무엇인지는 모릅니다.

사용자 이름을 제외한 /etc/passwd의 모든 데이터를 필터링하는 것과 같은 작업을 수행하고 싶습니다.

예를 들어 다음 파일에서 user1, user2 및 user3을 가져오고 싶습니다. 이 경우 논리는 "파일의 각 줄에서 첫 번째 ':' 텍스트를 가져오는 것"일 수 있습니다.

user1:x:1:4
user2:x:2:5
user3:x:3:6

출력은 다음과 같습니다:

user1
user2
user3

답변1

cut이런 목적으로 존재합니다. 이 -d플래그는 구분 기호를 지정하고 -f출력할 필드를 지정합니다.

cut -d: -f1 /etc/passwd

에 대한 인수는 첫 번째 및 세 번째 필드를 표시하거나 처음 세 필드를 표시하는 -f것일 수 있으며 , 필드 대신 바이트와 문자를 읽는 플래그 도 있습니다 . 좀 더 유연한 것이 필요한 경우 일반적으로 해결책이 있습니다(참조1,31-3-b-cawk마태의 대답)

답변2

양식 입력에서 데이터를 추출할 때마다 고려해야 할 사항. 거의 모든 Unix 시스템에서 사용할 수 있으므로 다음과 같이 하는 것이 좋습니다.

awk -F':' '{print $1}' /etc/passwd 
  • -F':': ":"을 열 구분자로 정의합니다.
  • '{}': 각 라인에 대해 이 명령을 실행합니다.
  • print $1: 첫 번째 열을 화면에 인쇄합니다.

답변3

다음은 Perl 코드의 한 줄입니다:

perl -F/:/ -lane 'print $F[0]' /etc/passwd

답변4

귀하의 예에서는 3개의 이름이 모두 길이가 같습니다. 이 경우에는 일어날 수 있지만 /etc/passwd에서는 거의 발생하지 않습니다. colrm을 사용할 수도 있습니다:

echo "user1:x:1:4
> user2:x:2:5
> user3:x:3:6" | colrm 6
user1
user2
user3

아니면 물론이죠

cat FILE | colrm 6 

useless use of cat( 파일을 매개변수로 수동으로 전달할 수 없기 때문에 드문 경우는 적용되지 않습니다.)

관련 정보