첫 번째 단어가 파일의 첫 번째 단어인 모든 줄을 인쇄하는 방법은 무엇입니까?

첫 번째 단어가 파일의 첫 번째 단어인 모든 줄을 인쇄하는 방법은 무엇입니까?

sort.txt다음 내용이 포함된 텍스트 파일이 있습니다 .

2 Jack
2 Naomi
2 Tina
1 John
1 Tyler

로 시작하는 모든 줄을 인쇄하고 싶지만 2문제는 숫자가 항상 이 아닐 수도 있고 2임의의 숫자일 수도 있다는 것입니다. 첫 번째 단어가 첫 번째 줄과 동일한 모든 줄을 인쇄하고 싶습니다. 따라서 첫 번째 단어가 이면 3으로 시작하는 모든 줄을 인쇄합니다 3. 나는 성공하지 않고 이것을 시도했습니다.

firstWord=awk '{print $1;}'
egrep "^$firstWord" sort.txt

답변1

이것은 매우 사소한 일입니다 awk. 변수의 첫 번째 줄의 첫 번째 단어를 가져온 다음 후속 줄의 경우 해당 변수를 사용하여 첫 번째 단어와 일치하고 해당 줄만 인쇄합니다.

awk 'NR == 1 { fw = $1 } $1 == fw' sort.txt

이 구성은 NR == 1입력 파일의 첫 번째 줄만 가져오며 각 줄에 정의된 특수 구분 기호(공백으로 구분)가 없습니다. 첫 번째 필드는 에서 액세스 $1하고 저장합니다 fw. 후속 조건은 $1 == fw각 줄을 평가하고 조건이 충족되는 경우에만 반환합니다. true이므로 행이 인쇄됩니다.

답변2

awk를 사용하세요:

awk 'NR == 1 { word=$1 } { if (match($0, "^"word) > 0) print }' < sort.txt

첫 번째 줄에서 NR == 1"단어" 값을 줄의 첫 번째 단어로 지정합니다.

word어떤 줄에서든 해당 줄이 줄 시작 부분의 변수와 일치하면 인쇄합니다.

관련 정보