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