두 파일을 비교하고 새 파일의 각 행에 대해 변경된 열 번호의 차이를 얻고 싶습니다. 두 파일 모두 정렬된 데이터와 동일한 수의 행을 포함하는 동일한 구조를 갖습니다.
파일이 2개 있는데,
파일 1
01|Akshaya|9657|Pune
02|Samiksha|8391|Mumbai
파일 2
01|Akshaya|9657|Nashik
02|Samiksha|0202|Nagpur
이 두 파일을 비교하고 차이점을 기록하는 세부 정보를 인쇄하고 싶습니다. 첫 번째 행의 열이 일치하지 않는 것과 같습니다. 따라서 위의 두 파일을 비교해 보면 두 번째 파일의 첫 번째 줄이 첫 번째 파일의 첫 번째 줄과 다릅니다. 따라서 출력은 다음과 같습니다.
파일 3
Sr no|Col no
01|3
02|2,3
답변1
각 파일의 동일한 줄 번호를 나란히 놓고 열을 비교하십시오.
$ paste -d"|" file_1 file_2 \
| awk -v FS="|" 'BEGIN {print "Sr no|Col no"} \
{ printf $1"|"; \
for(i=2;i<=4;i++) { \
if($i!=$(i+4)) printf i-1","; \
} \
print "";
}'
열 계산 은 awk
1부터 시작됩니다. 귀하의 예는 0에서 시작하는 것처럼 보입니다. 그래서 출력에서 1을 뺍니다.
,
또한 각 줄에는 후행 문자가 있습니다. 필요한 경우 파이프를 통해 제거할 수 있습니다 sed
.
| sed 's/,$//'