This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux:basics [2019/04/18 10:19] mstraub [Regular Expressions] |
linux:basics [2020/12/21 09:51] mstraub proper switch for ISO 8601 |
||
---|---|---|---|
Line 481: | Line 481: | ||
==== Compressing files ==== | ==== Compressing files ==== | ||
- | For compressig files the zip formats gzip (.gz) and bzip2 (.bz2) are commonly used - especially the former. | + | For compressing files the zip formats gzip (.gz), bzip2 (.bz2) and xz (.xz, which uses LZMA compression) are commonly used. |
+ | |||
+ | Gzip is the most commonly used one, but according to [[https://www.rootusers.com/gzip-vs-bzip2-vs-xz-performance-comparison|this in-depth comparison]] .xz is the superior format - it is fast to decompress, achieves high compression rates and also has reasonable compression times until level 2 or 3. | ||
+ | |||
+ | The following commands (un)compress a single file and then remove the old (un)compressed file. | ||
<code bash> | <code bash> | ||
gzip my.txt # creates the gzipped file my.txt.gz and remove my.txt | gzip my.txt # creates the gzipped file my.txt.gz and remove my.txt | ||
- | gzip -d my.txt.gz # recreates my.txt and removes my.txt.gz; same as gunzip | + | gunzip my.txt.gz # recreates my.txt and removes my.txt.gz; same as gzip -d |
- | bzip2 my.txt # similar to gzip, but using bzip2 compression | + | |
- | bzip2 -d my.txt.gz # similar to gunzip; same as bunzip2 | + | |
</code> | </code> | ||
- | All these commands (un)zip a single file and then remove the old (un)zipped file. | + | The commands ''bzip2'' + ''bunzip2'' and ''xz'' + ''unxz'' work in the same fashion. |
+ | For all zip formats there is a ''cat''-style alias which allows for the creation of an uncompressed data stream: | ||
<code bash> | <code bash> | ||
- | gunzip #unzip, same as gzip -d | + | zcat # stream uncompressed gzip file to stdout, same as gzip -cd |
- | zcat #unzip to stdout, same as gzip -cd | + | bzcat |
+ | xzcat # same as xz --decompress --stdout | ||
</code> | </code> | ||
- | The programs ''gzip'' and ''bzip2'' have two "aliases": ''gunzip'' / ''bunzip2'' and ''zcat'' / ''bzcat''. These extra commands provide a short way to typically used functions. | + | |
==== Compressed Archives ==== | ==== Compressed Archives ==== | ||
Line 647: | Line 651: | ||
''date'' is a versatile tool for formatting dates / times and setting the system time ([[linux:installation#date_timezone|see also]]). | ''date'' is a versatile tool for formatting dates / times and setting the system time ([[linux:installation#date_timezone|see also]]). | ||
- | Get the current system time | + | Print the current time in different formats |
<code bash> | <code bash> | ||
- | date # print current system time (human readable) | + | date # default - a human readable format |
+ | date -I # only the date in ISO 8601 | ||
+ | date -Iseconds # date and time in ISO 8601 | ||
+ | date +%Y-%m-%dT%H%M # custom format useful for scripts, e.g. 2019-08-14T1129 | ||
</code> | </code> | ||
+ | |||
+ | Convert unix timestamps | ||
+ | <code bash> | ||
+ | date -d @1278923870 # print the unix timestamp in a human readable format | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
====== Working with Text ====== | ====== Working with Text ====== | ||
Line 804: | Line 819: | ||
<code bash> | <code bash> | ||
sed -E 's#(.*),(.*)#\1;\2#g' #replace a single comma with a semicolon | sed -E 's#(.*),(.*)#\1;\2#g' #replace a single comma with a semicolon | ||
+ | </code> | ||
+ | |||
+ | However, even with extended expressions ''sed'' does not support non-greedy expressions as it is possible with PCRE (perl compatible regular expressions). A good resort is to simply use ''perl'' itself: | ||
+ | |||
+ | <code bash> | ||
+ | perl -pe 's/.*thevalue="(.*?)".*/\1/g' file.txt | ||
</code> | </code> | ||