# Regular Expression
## Number and letter
| Expression | match |
| ----------- | ----------------------- |
| [0-9] | Any number |
| [a-z] | Any Lower case letters |
| [A-Z] | Any Bigger case letters |
| [a-zA-Z] | Any letters |
| [0-9a-zA-Z] | Any number and letters |
## Character
| Expression | match |
| ----------- | ------------------------------------------------------------ |
| **.** | Match any Character<br/>e.g., search google, “g.e” |
| **\*** | Match any Character include change line<br/>e.g., search google ccde, “g*e” |
| **.*** | Match none or any character |
| **\[0-9\]\[0-9\]\*** | Match one or more number<br/>e.g., 0, 11, 2552, 8886695 |
| **\[A-Z\]\[A-Z\]\* or \[a-z\]\[a-z\] \*** | Match one or more letter<br/>e.g., Y、IJK、ZZZZZZ |
| **.\*k** | Match any character until meet ‘k’ |
| **'ca\(r\\ \|n\\)'** | Match both character<br/>e.g., car, can|
# Search command
## Grep
| Command | Note |
| ------- | ------------------ |
| grep “search string” “File name” | Show the result of search string |
| ls /etc/ \| grep network | List file name which have “network” in /ect/ |
| grep -i “search string” | Not case sensitive |
| grep -n “search string” | Show line number |
| grep -v “search string” | Search inverse result |
| grep -r “search string” | Search in Directory and its subdirectories |
| grep -E “search string” | Search in Extended Regular Expression mode. <br> e.g., 'ca\(r\\ \|n\\)' to 'ca(r\|n)' |
## Sed
**Format**:
sed \[-OPTION\] \[ADD1\]\[,ADD2\] \[COMMAND\] \[/PATTERN\]\[/REPLACEMENT\]/\[FLAG\] \[FILE]
| option | Note |
| ------ | ------------------------------ |
| -e | Just excute, not write back. |
| -f | Use parameter by external file |
| -r | Use regular expression |
| -i | Write back result direct |
**Example**
| Command | Note |
| ------- | ------------------ |
| sed -e 's/cpu/memory/' test.txt ||
| sed -i -e 's/cpu/memory/i' test.txt ||
| sed 's/a/an/' \| sed 's/apple/APPLE/' | “this is a apple” to “this is an APPLE” |
## Awk
For awk variable:
| variable | Content |
| ------- | ------------------ |
| $0 | drwxr-xy-x 2 aaa aaa 4096 2011-09-07 11:44 Desktop |
| $1 | drwxr-xy-x |
| $2 | 2 |
| $3 | aaa |
| $4 | aaa |
| $5 | 4096 |
| $6 | 2011-09-07 |
| $7 | 11:44 |
| $8 | Desktop |
**example**
| variable | Content |
| ------- | ------------------ |
| ls -l \| awk '{print $5,$8}' | Print $5 and $8 |
| ls -l \| awk '{print "File",$8,"size =",$5,"Byte"}' | Combine another string |
| ls -l \| awk '{print "File",$8,"size =",$5/1024,"KB"}' | For calculate |
# Example
| Command | Note |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| (grep -n 192.168.56.255 <<< $(ifconfig)) \| awk -F' ' '{print $1}' | find IP in ifconfig, get row number by grep -n, print result by awk, select print result by \$1,\$2,\$n |

| Command | Note |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| (ifconfig \| grep -n inet) \| awk -F' ' 'NR==1{print $3}' | find IP in ifconfig, get row number by grep -n, print result by awk, select print row by NR== _num_, select print result by \$1,\$2,\$n|
