awk는 데이터가 세 개가 아닌 단일 열에 있는 파이프로 구분된 값 파일을 엽니다.

awk는 데이터가 세 개가 아닌 단일 열에 있는 파이프로 구분된 값 파일을 엽니다.

나는PSVtest1.psv 파일에는 다음과 같은 세 개의 데이터 열이 포함되어 있습니다., 단일 열에 데이터를 표시합니다.

xxxx|0001|rose  
yyyy|8768|lotus  
fgsh|6543|lilly  

print $1실제로 이것은 3개의 열이 있는 "|"로 구분된 파일이어야 하지만 아래와 같이 모든 열을 첫 번째 열로 가져오면

cat test1.psv |awk '{print $1}'

산출:

xxxx|0001|rose
yyyy|8768|lotus
fgsh|6543|lilly

그러나 결과는 다음과 같아야 합니다.

xxxx
yyyy
fgsh

그렇다면 print $2결과는 다음과 같아야 합니다.

0001
8768
6543

답변1

필드 구분 기호를 다음과 |같이 설정 해야 합니다 (그럴 필요는 없습니다 ).-Fcat

$ awk -F '|' '{print $1}' test1.csv
xxxx
yyyy
fgsh
$ awk -F '|' '{print $2}' test1.csv
0001
8768
6543
$ awk -F '|' '{print $3}' test1.csv
rose
lotus
lillyw

(참고 $명령줄 프롬프트 명령의 일부가 아닌 새 줄의 시작을 나타내는 데 사용됩니다.

-F로 임명POSIX그리고 휴대성이 있어야 합니다.

답변2

파일은 탭으로 구분되거나 하나 이상의 공백으로 구성된 문자열이라고 가정하므로 파이프로 구분된 값 파일을 사용하려면 필드가 파이프 문자 | .

위 문장의 첫 번째 링크에서:

(필드 구분 기호) 값은 할당 연산자 "="를 사용하여 awk 프로그램에서 변경할 수 있습니다(할당 표현식 섹션 참조). 일반적으로 이를 수행하는 적절한 시기는 첫 번째 레코드가 올바른 구분 기호로 읽혀지도록 입력이 처리되기 전 실행 시작 시점입니다. 이를 수행하려면 특수 BEGIN 모드를 사용하십시오(BEGIN 및 END 특수 모드 섹션 참조).

예를 들어, 여기서는 (필드 구분 기호라고도 함)을 설정합니다.FS)를 문자열 "|"로:

cat test1.psv | awk 'BEGIN { FS = "|" } ; { print $1 }'

답변3

파일을 구분하는 특정 열만 반환하려면 다음 명령을 실행하십시오.

cut -d'|' -f1 test1.csv

필드 1 반환...위의 내용을 -f2로 변경하여 두 번째 열을 반환합니다. -d parm은 이 경우 구분 기호 "|"를 정의합니다.

파이프 | 따라서 위의 내용은 다음과 같이 쓸 수도 있습니다.

cat test1.csv | cut -d'|' -f1

답변4

awk -F "|" '{print $1}' p.txt ===============> To get first column

awk -F "|" '{print $2}' p.txt===================> To get second column




python

Below python code drives first and second column

#!/usr/bin/python

k=open('p.txt','r')
for i in k:
    print " ".join(i.split("|")[0:2])

관련 정보