一、Linux命令行通配符
* 0到多个任意字符
? 单个任意字符
; 不同命令分隔符
# 配置文件注释
| 管道
~ 用户家目录
- 上一次的目录
$ 表示变量的符号
/ 路径分隔符
> 输出重定向,覆盖
>> 追加输出重定向
< 输入重定向
<
' 不解析变量
" 解析变量,与不加引号作用相同
`` 等价于$(),执行命令返回结果
{} 花括号内可以是命令区块或内容序列 命令区块 cp a.txt{,.bak} 内容序列 touch file{1..5}.txt
! 取反
&& 前一个命令成功执行后面的
|| 前一个命令失败执行后面的
.. 上一级目录
. 当前目录
Linux常用正则规则
^ 匹配开头
$ 匹配结尾
\ 转义
. 单个任意字符
* 匹配0~n次
[] 匹配范围内任意单个字符
[^] 不匹配范围内的字符
\{n,m\} 匹配n,m次
\{n,\} 最少匹配n次
\{n\} 匹配n次
\{,m\} 最多匹配m次
扩展的正则规则
+ 匹配一到多次
? 匹配0到1次
| 匹配左右任意一边的字符
() 分组匹配
\b 单词边界
练习:
1)从ifconfig命令的结果中获取IP地址
ifconfig eth0|sed -nr 's/^.*dr:(.*) B.*$/\1/gp'
2)将/etc/passwd文件的第一列和最后一列位置互换
sed -nr 's/([^:]+)(:.*:)(\/.*$)/\3\2\1/gp' /etc/passwd