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
어떤 줄에서든 해당 줄이 줄 시작 부분의 변수와 일치하면 인쇄합니다.