Text Processing: Grep - compare two files: Difference between revisions
From WikiMLT
m (Стадий: 3 [Фаза:Разработване, Статус:Разработван]; Категория:Linux Server) |
m (Стадий: 4 [Фаза:Авторизиране, Статус:Разработен]; Категория:Linux Server) |
||
Line 29: | Line 29: | ||
{{devStage | {{devStage | ||
| Прндл = Linux Server | | Прндл = Linux Server | ||
| Стадий = | | Стадий = 4 | ||
| Фаза = | | Фаза = Авторизиране | ||
| Статус = | | Статус = Разработен | ||
| ИдтПт = Spas | | ИдтПт = Spas | ||
| РзбПт = {{REVISIONUSER}} | | РзбПт = Spas | ||
| АвтПт = {{REVISIONUSER}} | |||
| ИдтДт = 4.08.2022 | | ИдтДт = 4.08.2022 | ||
| РзбДт = {{Today}} | | РзбДт = 4.08.2022 | ||
| АвтДт = {{Today}} | |||
| ИдтРв = [[Special:Permalink/29894|29894]] | | ИдтРв = [[Special:Permalink/29894|29894]] | ||
| РзбРв = {{REVISIONID}} | | РзбРв = [[Special:Permalink/29896|29896]] | ||
| АвтРв = {{REVISIONID}} | |||
}} | }} | ||
</div> | </div> | ||
</noinclude> | </noinclude> |
Revision as of 10:16, 4 August 2022
References
- …
- …
Section 1
… Source of the article: Ask Ubuntu: Comparing contents of two files.
Get only the lines that exist in file1
but not in file2
:
grep -Fxvf file2 file1 > diff_file
Where:
-F
,--fixed-strings
– PATTERNS are strings,-x
,--line-regexp
– match only whole lines,-v
,--invert-match
– select non-matching lines,-f
,--file=FILE
– take PATTERNS from FILE.
An inline script for two ways comparison:
FILE1="file1"; FILE2="file2"; \
cat <(echo -e "\nOnly in $FILE1") \
<(grep -Fvxf "$FILE2" "$FILE1") \
<(echo -e "\nOnly in $FILE2") \
<(grep -Fvxf "$FILE1" "$FILE2")
From the comments:
- The problem with this solution is that it'll go super slow if you've got long files (it's O(N^2) on the length of the longer file). Sorting first and using something like
diff
orcomm
will be O(N log N).