내 출력 diff
형식은 다음과 같습니다.
$ curr_dt=$(date +%m_%d_%Y)
$ echo $curr_dt
$ diff -q /POC/$curr_dt/DDL/ /POC/Backup/DDL/
Only in /POC/Backup/DDL/: comp1.txt
Only in /POC/Backup/DDL/: comp.txt
Only in /POC/Backup/DDL/: junk.txt
Files /POC/$curr_dt/DDL/test.demo_table1.txt and /POC/Backup/DDL/test.demo_table1.txt differ
Only in /POC/$curr_dt/DDL/: test.demo_table2.txt
이제 위에 표시된 데이터에서 다음 정보를 얻고 싶습니다.
- /POC/Backup/DDL/에서만:
- /POC/$curr_dt/DDL/에서만:
- 파일* 다름
예를 들어:
diff -q /POC/05_26_2022/DDL/ /POC/Backup/DDL/ | grep -i '^Files.*.differ$'
Files /POC/05_26_2022/DDL/test.demo_table1.txt and /POC/Backup/DDL/test.demo_table1.txt differ
위와 같이 전체 데이터 행을 얻습니다. test.demo_table1.txt를 가져와서 파일에 저장하면 됩니다. 비슷하게
i am not able to grep with variable $curr_dt in the file
답변1
$curr_dt
위에 제공된 코드 조각에서 변수가 설정/확장되지 않은 것 같습니다 . 적어도 출력 echo
에는 나타나지 않으며 나타나지 않습니다 . (xtrace) 옵션 세트를 diff
사용하여 -x
코드를 실행합니다 . 다른 질문이 있으시면 다음을 시도해 보세요.
awk '/^Only/ {gsub("[/:]+", "_", $3); print $NF > $3} /^Files.*differ/ {sub(/^.*\//, "", $2); print $2 > "different"}' file
각각의 파일 이름을 가진 세 개의 파일이 생성되어야 합니다.
OP의 반복된 요청에 따라 파일 이름이 인식/인식된 디렉터리로 축소되었습니다.
awk '
/Only/ {m = split($3, T, "[/:]+")
print $NF > T[m-2]
}
/Files.*differ/ {sub(/^.*\//, "", $2)
print $2 > "different"
}
' file