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

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

나는PSVtest1.psv 파일을 열 때 아래와 같이 세 개의 데이터 열이 포함되어 있습니다., 단일 열에 데이터를 표시합니다.

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

실제로 이것은 "|"이어야 합니다. 3개의 열로 구분된 파일이지만 I 경우 print $1모든 열은 아래와 같이 첫 번째 열로 표시됩니다.

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

출력:

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

하지만 결과는 다음과 같아야 합니다.

xxxx
yyyy
fgsh

만약 우리라면 print $2결과는 다음과 같아야 합니다:

0001
8768
6543

답변1

|다음 과 같이 필드 구분 기호를 설정해야 합니다 -F(또한 필요하지 않음 cat).

$ 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])

관련 정보