LoginSignup
3
5

More than 5 years have passed since last update.

diffコマンドで特定の差異を無視する(-Iオプション --ignore-matching-lines)

Posted at

完全にタイトル通りですw

shell
newgyu:~/temp$ diff a.txt c.txt --unified 
--- a.txt   2014-08-18 23:41:29.164423119 +0900
+++ c.txt   2014-08-18 23:40:55.720423888 +0900
@@ -1,4 +1,4 @@  

-aaaa: 1234
+aaaa: 12345678
 bbb: /path/to/?query=value
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"
@@ -6,5 +6,5 @@
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"
-ccc: HOGEHOGE
+ccc: FUGAHOGE
 header: hoge=fuga

こんなdiffが出るときに ccc が nullじゃなくて何か[A-Z]+ な値(大文字英字)が入っていれば差異は無視したいとき。ありますよね。

表題どおり-Iオプションで正規表現を指定することで除外できます。

shell
newgyu@newgyu-UX31E:~/temp$ diff a.txt c.txt --unified -I "ccc: [A-Z]\+" 
--- a.txt   2014-08-18 23:41:29.164423119 +0900
+++ c.txt   2014-08-18 23:40:55.720423888 +0900
@@ -1,4 +1,4 @@
-aaaa: 1234
+aaaa: 12345678
 bbb: /path/to/?query=value
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"

ccc: null という時は無視したくないです。

shell
newgyu@newgyu-UX31E:~/temp$ diff a.txt b.txt --unified -I "ccc: [A-Z]\+" 
--- a.txt   2014-08-18 23:41:29.164423119 +0900
+++ b.txt   2014-08-18 23:58:43.588399334 +0900
@@ -1,4 +1,4 @@
-aaaa: 1234
+aaaa: 1254
 bbb: /path/to/?query=value
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"
@@ -6,5 +6,5 @@
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"
 getHeader("head1"): "xxxxx"
-ccc: HOGEHOGE
+ccc: null
 header: hoge=fuga
3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5