I have been told to make git messages for each modified file all one line so I can use grep to find all changes to that file. For instance:
$git commit -a
modified: path/to/ - 1) change1 , 2) change2, etc......
$git log | grep path/to/
modified: path/to/ - 1) change1 , 2) change2, etc......
modified: path/to/ - 1) change1 , 2) change2, etc......
modified: path/to/ - 1) change1 , 2) change2, etc......
That's great, but then the actual line is harder to read because it either runs off the screen or wraps and wraps and wraps.
If I want to make messages like this:
$git commit -a
modified: path/to/
1) change1
2) change2
etc......
is there a good way to then use grep or cut or some other tool to get a readout like
$git log | grep path/to/
modified: path/to/
1) change1
2) change2
etc......
modified: path/to/
1) change1
2) change2
etc......
modified: path/to/
1) change1
2) change2
etc......
1 Answer
If the output of grep command shows like this,
$ git log | grep path/to/
modified: path/to/ - 1) change1 , 2) change2, etc......
modified: path/to/ - 1) change1 , 2) change2, etc......
modified: path/to/ - 1) change1 , 2) change2, etc......
Then you can pipe it to the below awk command to produce the desired output,
git log | grep path/to/ | awk -v RS='[-,]' '{print}'
Example:
$ cat aa
modified: path/to/ - 1) change1 , 2) change2, etc......
modified: path/to/ - 1) change1 , 2) change2, etc......
modified: path/to/ - 1) change1 , 2) change2, etc......
$ awk -v RS='[-,]' '{print}' aa
modified: path/to/
1) change1
2) change2
etc......
modified: path/to/
1) change1
2) change2
etc......
modified: path/to/
1) change1
2) change2
etc......