파일의 한 줄을 후속 줄과 비교합니다.

파일의 한 줄을 후속 줄과 비교합니다.

다음과 같은 파일이 있다고 가정해 보겠습니다.예.txt여기에는 다음 형식의 데이터가 포함됩니다.

1 John
2 Crema
3 Abraham
1 John

다음을 사용하여 파일을 한 줄씩 읽을 수 있습니다.

while read p
do
echo $p
done <sample.txt

중복 제거나 패턴 일치 등과 같은 여러 작업을 수행할 수 있도록 특정 행을 후속 행과 비교할 수 있는 방법이 있습니까? 비교 작업을 완료하려면 어떤 추가 콘텐츠를 추가해야 합니까?

답변1

prev=""
while read p; do
    # compare p with prev somehow
    prev="$p"
done <sample.txt

이를 통해 직접 인접한 두 선을 비교할 수 있습니다. 파일에서 더 멀리 있는 행을 비교하려는 경우에는 더 복잡해지고 셸에서 가장 잘 작성되지 않을 수 있습니다(세부 내용은 작업에 따라 달라질 수 있음).

답변2

awk '{if (NR==1) STR=$0; if ($0==STR) print NR}' file

이 예에서는 행 1을 비교 기준으로 사용합니다. NR==1을 비교하려는 줄 번호로 변경하세요.

선택한 줄을 포함하여 선택한 줄과 일치하는 모든 줄 번호가 인쇄됩니다. 귀하의 예에 적용하면 다음과 같이 인쇄됩니다.

1
4

줄 번호가 있으면 sed를 통해 제거할 수 있습니다.

sed -i '4d' file

또는 이 줄에서 다른 작업을 수행합니다(예: NR=줄 번호와 함께 awk를 추가로 사용).

관련 정보