다음은 샘플 입력 파일입니다.
ip.txt
:
john math
science
paul math
science
rosy math
jill science
rob math
science
hary math
원하는 출력:
john
paul
rosy
jill
rob
hary
내가 사용할 때 :
awk '{print $1}' ip.txt
내 결과는 다음과 같습니다
john
science
paul
science
rosy
jill
rob
science
hary
두 번째 열 값을 인쇄하고 싶지 않고 파일에 공백을 인쇄하고 싶습니다.
이 목표를 어떻게 달성할 수 있나요? 저는 솔라리스 5.10과 ksh
.
답변1
이상한:
awk '{print (NF>1) ? $1 : ""}' file
필드 수가 1보다 크면 첫 번째 필드를 인쇄하고, 그렇지 않으면 빈 줄을 인쇄합니다.
몇 가지 추가 생각:
데이터가 탭으로 구분되어 있으면
awk -F '\t' '{print $1}' file
처음 8자를 추출하려면
awk '{print substr($0,1,8)}' file
답변2
POSIX sed 사용:
sed -e 's/^\([^[:blank:]]*\)[[:blank:]].*/\1/;t' -ed <file
답변3
제목 필드 앞에 추가 공백을 모두 추가하려면 다음을 수행할 수 있습니다.
grep -o "^[^ ]* \+" ip.txt
추가 공간을 원하지 않는 경우:
sed 's/ \+.*//' ip.txt
둘 다 빈 이름 필드가 있는 행을 유지합니다.