나는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
답변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])