目次

icdiff - 改良された色付き diff

本家: icdiff: side-by-side highlighted command line diffs
ソースコード: jeffkaufman/icdiff: improved colored diff

インストール

$ pip install --user icdiff

Collecting icdiff
  Downloading icdiff-2.0.7-py3-none-any.whl.metadata (5.1 kB)
Downloading icdiff-2.0.7-py3-none-any.whl (17 kB)
Installing collected packages: icdiff
Successfully installed icdiff-2.0.7

$ icdiff --version

icdiff version 2.0.7

長すぎる単一行を色分けしたい場合は sed で行を分ける🤔

$ icdiff curl{1,2}.txt

curl1.txt                                                curl2.txt
curl -LOC - https://ton.x.com/i/ton/data/archives/14719  curl -LOC - https://ton.x.com/i/ton/data/archives/14755 
758/twitter-2025-03-18-82a11ffb054e6ec92d5ef55bc1940fea  233/twitter-2025-03-26-82a11ffb054e6ec92d5ef55bc1940fea 
23ac88109383d12fdf71f610bc37e96b.zip -H 'User-Agent: Mo  23ac88109383d12fdf71f610bc37e96b.zip -H 'User-Agent: Mo 
zilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101   zilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101  
Firefox/137.0' -H 'Accept: text/html,application/xhtml+  Firefox/137.0' -H 'Accept: text/html,application/xhtml+ 
xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Languag  xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Languag 
e: ja,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip,   e: ja,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip,  
deflate, br, zstd' -H 'DNT: 1' -H 'Connection: keep-ali  deflate, br, zstd' -H 'DNT: 1' -H 'Connection: keep-ali 
ve' -H 'Referer: https://x.com/' -H 'Cookie: guest_id_m  ve' -H 'Cookie: guest_id_marketing=v1%3A072107210721072 
arketing=v1%3A072107210721072119; guest_id_ads=v1%3A072  119; guest_id_ads=v1%3A072107210721072119; personalizat 
107210721072119; personalization_id="v1_Zfkq1SM6L5tpKK0  ion_id="v1_Xw+lQWffp06Am67TK9R1/g=="; guest_id=v1%3A072 
FLVSLPw=="; guest_id=v1%3A072107210721072119; kdt=AnalD  107210721072119; kdt=AnalDansyakuUnkoChinChinBeeoUoUnko 
ansyakuUnkoChinChinBeeoUoUnkoUnkoh; twid=u%9Z07210721;   Unkoh; twid=u%9Z07210721; ct0=1e07210fea307219c562ca072 
ct0=1e07210fea307219c562ca072194a29b8cdf09d07219db55072  194a29b8cdf09d07219db55072162e600721a451e450721a319dd00 
162e600721a451e450721a319dd00721fb2460cc60721bed4ad08cd  721fb2460cc60721bed4ad08cd17c251c746d0dd5c55ac807215d50 
17c251c746d0dd5c55ac807215d507210b18bf8f0721fb5f0721qdq  7210b18bf8f0721fb5f0721qdq2f; auth_token=322b194b0721da 
2f; auth_token=322b194b0721da1qdqdq0721b0721e22b91c35ce  1qdqdq0721b0721e22b91c35ce2; _twitter_sess=BakaBiIKIkxh 
2; _twitter_sess=BakaBiIKIkxhc2hJQchichiQWN0aW9uQ29udHJ  c2hJQchichiQWN0aW9uQ29udHJvbGxlcjo6Rc2g6OkZsYXNo%250ASG 
vbGxlcjo6Rc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7AA%0721%  FzaHsABjoKQHVzZWR7AA%0721%253D--0721b91ac812d853bUnko9U 
253D--0721b91ac812d853bUnko9Unko612b0721bebc74; __cf_bm  nko612b0721bebc74; __cf_bm=5hq5aDAWc6HH97K1pCN61YM3WtZY 
=yubCEmuAnalX35z6zKT0721FnVdoQL.sJgyeRxDFCsc-0721864701  qWv9v3Z.Unkou0s-1743058370-1.0.1.1-G8k5snXONrXvQ71H.Pdt 
-1.0.1.1-mPLZAAJH0el4UnkoMhAnalAnalIMLh8cyBHoWUmz9qx.me  ZbaT1DB_nID0721pth0jJmcLzCJjm.WleMBiv36ojRH5LpV0hLUNKOs 
vET6blvY8eE0721rnXEshS2v7pymswgOcevGSbxgF6u_aOgGdv5xInw  lyZPPW_p9fqd_gtysmFiUnkoInorhvig' -H 'Upgrade-Insecure- 
XmHG9I' -H 'Upgrade-Insecure-Requests: 1' -H 'Sec-Fetch  Requests: 1' -H 'Sec-Fetch-Dest: document' -H 'Sec-Fetc 
-Dest: document' -H 'Sec-Fetch-Mode: navigate' -H 'Sec-  h-Mode: navigate' -H 'Sec-Fetch-Site: same-site' -H 'Se 
Fetch-Site: same-site' -H 'Sec-Fetch-User: ?1' -H 'Prio  c-Fetch-User: ?1' -H 'Priority: u=0, i' -H 'TE: trailer 
rity: u=0, i' -H 'TE: trailers'                          s'

$ icdiff <(cat curl1.txt | sed -e 's/-H /\n-H /g' -e 's/; /;\n/g') <(cat curl2.txt | sed -e 's/-H /\n-H /g' -e 's/; /;\n/g')

/proc/self/fd/11                                         /proc/self/fd/12                                        
curl -LOC - https://ton.x.com/i/ton/data/archives/14719  curl -LOC - https://ton.x.com/i/ton/data/archives/14755 
758/twitter-2025-03-18-82a11ffb054e6ec92d5ef55bc1940fea  233/twitter-2025-03-26-82a11ffb054e6ec92d5ef55bc1940fea 
23ac88109383d12fdf71f610bc37e96b.zip                     23ac88109383d12fdf71f610bc37e96b.zip                    
-H 'User-Agent: Mozilla/5.0 (X11;                        -H 'User-Agent: Mozilla/5.0 (X11;                       
Linux x86_64;                                            Linux x86_64;                                           
rv:137.0) Gecko/20100101 Firefox/137.0'                  rv:137.0) Gecko/20100101 Firefox/137.0'                 
-H 'Accept: text/html,application/xhtml+xml,application  -H 'Accept: text/html,application/xhtml+xml,application 
/xml;q=0.9,*/*;q=0.8'                                    /xml;q=0.9,*/*;q=0.8'                                   
-H 'Accept-Language: ja,en-US;q=0.7,en;q=0.3'            -H 'Accept-Language: ja,en-US;q=0.7,en;q=0.3'           
-H 'Accept-Encoding: gzip, deflate, br, zstd'            -H 'Accept-Encoding: gzip, deflate, br, zstd'           
-H 'DNT: 1'                                              -H 'DNT: 1'                                             
-H 'Connection: keep-alive'                              -H 'Connection: keep-alive'                             
-H 'Referer: https://x.com/' 
-H 'Cookie: guest_id_marketing=v1%3A072107210721072119;  -H 'Cookie: guest_id_marketing=v1%3A072107210721072119; 
guest_id_ads=v1%3A072107210721072119;                    guest_id_ads=v1%3A072107210721072119;
personalization_id="v1_Zfkq1SM6L5tpKK0FLVSLPw==";        personalization_id="v1_Xw+lQWffp06Am67TK9R1/g==";
guest_id=v1%3A072107210721072119;                        guest_id=v1%3A072107210721072119;
kdt=AnalDansyakuUnkoChinChinBeeoUoUnkoUnkoh;             kdt=AnalDansyakuUnkoChinChinBeeoUoUnkoUnkoh;            
twid=u%9Z07210721;                                       twid=u%9Z07210721;
ct0=1e07210fea307219c562ca072194a29b8cdf09d07219db55072  ct0=1e07210fea307219c562ca072194a29b8cdf09d07219db55072 
162e600721a451e450721a319dd00721fb2460cc60721bed4ad08cd  162e600721a451e450721a319dd00721fb2460cc60721bed4ad08cd 
17c251c746d0dd5c55ac807215d507210b18bf8f0721fb5f0721qdq  17c251c746d0dd5c55ac807215d507210b18bf8f0721fb5f0721qdq 
2f;                                                      2f;
auth_token=322b194b0721da1qdqdq0721b0721e22b91c35ce2;    auth_token=322b194b0721da1qdqdq0721b0721e22b91c35ce2;   
_twitter_sess=BakaBiIKIkxhc2hJQchichiQWN0aW9uQ29udHJvbG  _twitter_sess=BakaBiIKIkxhc2hJQchichiQWN0aW9uQ29udHJvbG 
xlcjo6Rc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7AA%0721%253  xlcjo6Rc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7AA%0721%253 
D--0721b91ac812d853bUnko9Unko612b0721bebc74;             D--0721b91ac812d853bUnko9Unko612b0721bebc74;
__cf_bm=yubCEmuAnalX35z6zKT0721FnVdoQL.sJgyeRxDFCsc-072  __cf_bm=5hq5aDAWc6HH97K1pCN61YM3WtZYqWv9v3Z.Unkou0s-174 
1864701-1.0.1.1-mPLZAAJH0el4UnkoMhAnalAnalIMLh8cyBHoWUm  3058370-1.0.1.1-G8k5snXONrXvQ71H.PdtZbaT1DB_nID0721pth0 
z9qx.mevET6blvY8eE0721rnXEshS2v7pymswgOcevGSbxgF6u_aOgG  jJmcLzCJjm.WleMBiv36ojRH5LpV0hLUNKOslyZPPW_p9fqd_gtysmF 
dv5xInwXmHG9I'                                           iUnkoInorhvig' 
-H 'Upgrade-Insecure-Requests: 1'                        -H 'Upgrade-Insecure-Requests: 1'
-H 'Sec-Fetch-Dest: document'                            -H 'Sec-Fetch-Dest: document'
-H 'Sec-Fetch-Mode: navigate'                            -H 'Sec-Fetch-Mode: navigate'
-H 'Sec-Fetch-Site: same-site'                           -H 'Sec-Fetch-Site: same-site'
-H 'Sec-Fetch-User: ?1'                                  -H 'Sec-Fetch-User: ?1'