[20260608]使用sdiff比较修改文件.txt
--//有时候修改文件,想比较两者的不同之处,大部分情况下使用diff。如果改动不多,两个对比,使用sdiff相当不错,做一个记录:
$ sdiff -w 240 -s -d prx.sql prz.sql
> col tpt_1 new_value _tpt_1
> col tpt_2 new_value _tpt_2
SELECT NULL "1", NULL "2" FROM DUAL WHERE 1 = 2; | SELECT NULL "1", NULL "2" , NULl tpt_1 , NULL tpt_2 FROM dual WHERE 1 = 2;
SELECT CASE WHEN INSTR (LOWER ('&2'), '2') > 0 THEN '--' ELSE ' ' END tpt_pr | SELECT CASE WHEN INSTR (LOWER ('&_tpt_2'), '2') > 0 THEN '--' ELSE ' ' END tpt_pr
,CASE WHEN INSTR (LOWER ('&2'), '2') > 0 THEN ' ' ELSE '--' END tpt_pr2 | ,CASE WHEN INSTR (LOWER ('&_tpt_2'), '2') > 0 THEN ' ' ELSE '--' END tpt_pr2
,CASE WHEN INSTR (LOWER ('&2'), 'n') > 0 THEN '--' ELSE ' ' END tpt_prnn | ,CASE WHEN INSTR (LOWER ('&_tpt_2'), 'n') > 0 THEN '--' ELSE ' ' END tpt_prnn
,CASE WHEN INSTR (LOWER ('&2'), 'n') > 0 THEN ' ' ELSE '--' END tpt_prn | ,CASE WHEN INSTR (LOWER ('&_tpt_2'), 'n') > 0 THEN ' ' ELSE '--' END tpt_prn
,CASE WHEN INSTR (LOWER ('&1'), ',') > 0 THEN ' ' WHEN '&1' IS NULL THEN '--' ELSE '--' END tpt_pri | ,CASE WHEN INSTR (LOWER ('&_tpt_1'), ',') > 0 THEN ' ' WHEN '&_tpt_1' IS NULL THEN '--' ELSE '--' END tpt_pri
,CASE WHEN INSTR (LOWER ('&1'), ',') > 0 THEN '--' WHEN '&1' IS NULL THEN '--' ELSE ' ' END tpt_prr | ,CASE WHEN INSTR (LOWER ('&_tpt_1'), ',') > 0 THEN '--' WHEN '&_tpt_1' IS NULL THEN '--' ELSE ' ' END tpt_prr
999999 &_tpt_prr if regexp_like(lower(l_descTbl(i).col_name), lower('&1')) then | 999999 &_tpt_prr if regexp_like(lower(l_descTbl(i).col_name), lower('&_tpt_1')) then
999999 &_tpt_pri if i in (&1) then | 999999 &_tpt_pri if i in (&_tpt_1) then
--//左右对比,查看非常方便清晰。
--//简单解析:
-s, --suppress-common-lines do not output common lines
-d, --minimal try hard to find a smaller set of changes
-w, --width=NUM output at most NUM (default 130) print columns
--//顺便附上diff的比较结果:
$ diff -Nur prx.sql prz.sql
--- prx.sql 2026-04-28 16:28:04.776874339 +0800
+++ prz.sql 2026-06-01 17:13:49.973831563 +0800
@@ -21,15 +21,17 @@
col 1 new_value 1
col 2 new_value 2
+col tpt_1 new_value _tpt_1
+col tpt_2 new_value _tpt_2
-SELECT NULL "1", NULL "2" FROM DUAL WHERE 1 = 2;
+SELECT NULL "1", NULL "2" , NULl tpt_1 , NULL tpt_2 FROM dual WHERE 1 = 2;
-SELECT CASE WHEN INSTR (LOWER ('&2'), '2') > 0 THEN '--' ELSE ' ' END tpt_pr
- ,CASE WHEN INSTR (LOWER ('&2'), '2') > 0 THEN ' ' ELSE '--' END tpt_pr2
- ,CASE WHEN INSTR (LOWER ('&2'), 'n') > 0 THEN '--' ELSE ' ' END tpt_prnn
- ,CASE WHEN INSTR (LOWER ('&2'), 'n') > 0 THEN ' ' ELSE '--' END tpt_prn
- ,CASE WHEN INSTR (LOWER ('&1'), ',') > 0 THEN ' ' WHEN '&1' IS NULL THEN '--' ELSE '--' END tpt_pri
- ,CASE WHEN INSTR (LOWER ('&1'), ',') > 0 THEN '--' WHEN '&1' IS NULL THEN '--' ELSE ' ' END tpt_prr
+SELECT CASE WHEN INSTR (LOWER ('&_tpt_2'), '2') > 0 THEN '--' ELSE ' ' END tpt_pr
+ ,CASE WHEN INSTR (LOWER ('&_tpt_2'), '2') > 0 THEN ' ' ELSE '--' END tpt_pr2
+ ,CASE WHEN INSTR (LOWER ('&_tpt_2'), 'n') > 0 THEN '--' ELSE ' ' END tpt_prnn
+ ,CASE WHEN INSTR (LOWER ('&_tpt_2'), 'n') > 0 THEN ' ' ELSE '--' END tpt_prn
+ ,CASE WHEN INSTR (LOWER ('&_tpt_1'), ',') > 0 THEN ' ' WHEN '&_tpt_1' IS NULL THEN '--' ELSE '--' END tpt_pri
+ ,CASE WHEN INSTR (LOWER ('&_tpt_1'), ',') > 0 THEN '--' WHEN '&_tpt_1' IS NULL THEN '--' ELSE ' ' END tpt_prr
FROM DUAL;
set termout on
@@ -58,8 +60,8 @@
999999 while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop
999999 dbms_output.put_line( '==============================' );;
999999 for i in 1 .. l_colCnt loop
-999999 &_tpt_prr if regexp_like(lower(l_descTbl(i).col_name), lower('&1')) then
-999999 &_tpt_pri if i in (&1) then
+999999 &_tpt_prr if regexp_like(lower(l_descTbl(i).col_name), lower('&_tpt_1')) then
+999999 &_tpt_pri if i in (&_tpt_1) then
999999 dbms_sql.column_value( l_theCursor, i,l_columnValue );;
999999 &_tpt_prnn dbms_output.put_line ( rpad( l_descTbl(i).col_name,30 ) || ': ' || l_columnValue );;
999999 &_tpt_prn dbms_output.put_line ( lpad(i,3,'0')||' '||rpad( l_descTbl(i).col_name,30 ) || ': ' || l_columnValue );;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3173307/ ,如需转载,请注明出处,否则将追究法律责任。