파일의 문자열 잘라내기 및 비교

파일의 문자열 잘라내기 및 비교

내 파일에는 다음 줄이 포함되어 있습니다.

3 5 asd/sdf/rdc fgd/ghw/rtt
4 7 axd/sdf/rdc axd/ghw/ert
8 2 drf/sdf/uhg fgd/ghw/gcd

3열과 4열의 이름을 비교하고 일치하는지 인쇄하고 싶습니다. 결과는 다음과 같습니다.

3 5 asd/sdf/rdc fgd/ghw/rtt diff
4 7 axd/sdf/rdc axd/ghw/ert equal
8 2 drf/sdf/uhg fgd/ghw/gcd diff

답변1

사용 awk:

awk '{ split($3,a,"/"); split($4,b,"/"); $(NF+1) = a[1] == b[1] ? "equal" : "diff" }; 1' file

이는 슬래시로 세 번째와 네 번째 필드를 분할한 다음 분할 문자열의 첫 번째 요소가 동일한지 다른지 여부에 따라 새 필드를 추가합니다.

1끝에 후행하면 수정된 레코드가 출력됩니다.

답변2

표준을 사용하여 이 작업을 수행할 수 있습니다 sed.

sed 's_$_ diff_;s_\( [^/]*/\)\(.*\1.*\)diff_\1\2equal_'
  • 비관적으로 우리는 항상 diff먼저 추가합니다.s_$_ diff_
  • 공백에서 다음 슬래시까지의 순서가 줄( ) 뒤에서 반복되면 s다음으로 바꿉니다 .diffequal[^/]*/\1

관련 정보