![파일의 문자열 잘라내기 및 비교](https://linux55.com/image/210920/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%9E%98%EB%9D%BC%EB%82%B4%EA%B8%B0%20%EB%B0%8F%20%EB%B9%84%EA%B5%90.png)
내 파일에는 다음 줄이 포함되어 있습니다.
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
다음으로 바꿉니다 .diff
equal
[^/]*/
\1