06系统正则符号
系统符号作用
简化操作,进行匹配
系统特殊符号
基础符号
$ 用于取出变量的内容;用于取出指定列的信息(awk);表示用户命令提示符;表示一行的结尾
awk '{print $3}' /oldboy/oldboy.txt
! 用于表示取反或者排除;命令行中表示取出最近命令;用于表示强制操作处理
| 表示管道符号,管道前面命令交给管道后面执行,经常配合xargs命令使用
xargs 将信息进行分组显示
查找指定数据信息进行删除
find /oldboy -type f -name "oldboy*.txt" | xargs rm
find /oldboy -type f -name "oldboy*.txt" -exec rm -rf {} \;
find /oldboy -type f -name "oldboy*.txt" -delete
查找指定数据进行复制
find /oldboy -type f -name "**txt" | xargs -i cp {} /oldgirl
find /oldboy -type f -name "*.txt" | xargs cp -t /oldgirl
查找指定数据进行移动
查找指定数据按照日期
# 命令提示符;注释
如何忽略别名功能
使用命令的绝对路径
在命令执行前加
在xargs信息后面的命令自动忽略别名功能
引号符号
'' 输出的信息所见即所得
"" 和单引号功能类似但对特殊信息会做解析
`` $() 将引号中的命令先执行,将执行结果交给引号外面的命令进行处理
没有引号 和双引号功能类似但可以直接识别通配符信息
重定向符号
> 1> 标准输出重定向符号
2> 错误输出重定向符号
>> 1>> 标准输出追加重定向符号
2>> 错误追加重定向符号
< 标准输入重定向符号
tr <
xargs <
<< 标准输入追加重定向符号
cat >> /oldboy.txt <<EOF
如何将正确信息和错误信息都输出到文件中(日志文件)
echo oldboy >>/oldboy/info.log 2>>/oldboy/info.log
echo oldboy $>> /oldboy/info.log
echo oldboy >>/oldboy/info.log 2>>&1
路径信息
../ 上级目录
./ 当前目录
~ 家目录
cd $OLDPWD
- 两个目录间进行切换
逻辑符号
&& 与 前一个命令执行成功再执行后面的命令
|| 或 前一个命令执行失败再执行后面的命令
系统通配符号 利用通配符号匹配文件信息
* 模糊匹配所有内容
find -name "*.txt"
ll /oldboy/*.txt
{} 生成序列信息(生成一行序列)
echo {01..100}
echo {a..z}
echo{1..10..2}
echo {www,bbs,blog}
echo {a..c}{01..03}
echo A{,02}
备份数据
cp /oldboy/oldboy.txt /oldboy/oldboy.txt.bak
cp /oldboy/oldboy.txt{,.bak}
seq -w 生成一列序列
在/oldboy目录中创建alex.txt文件,并在/oldboy目录中生成alex.txt.ori备份文件
mkdir /oldboy
touch alex.txt
cp /oldboy/alex.txt{,.ori}
如何将备份文件快速还原
rm /oldboy/alex.txt -f
mv /oldboy/alex.txt{.ori,}
正则符号 利用正则符号匹配文件内容信息
正则符号
利用正则符号匹配文件内容信息
正则符号经常出现在各种开发语言中
正则符号经常被三剑客命令使用
基础正则符号
^ 以什么信息开头的信息 ll /oldboy | grep "^d"
$ 以什么结尾的信息 ll -F /etc/ | grep /$
将以oldboy开头的行找出来 grep "^oldboy" 文件中过滤
将以linux结尾的信息找出来 grep "linux$" 文件中过滤
将全部内容显示但不要显示空行 grep -v "^$" 文件中过滤
^$ 空行符号
. 匹配任意一个字符且只有一个字符 grep "." ~/oldboy_test.txt
-o 显示匹配过程
* 匹配前一个字符,任意0个或多个以上连续字符 grep "0*" ~/oldboy_test.txt
以上连续字符
.* 匹配任意所有信息 grep ".*" ~/oldboy_test.txt
贪婪匹配 指定具体信息阻止贪婪匹配
grep "^m.*to" ~/oldboy_test.txt
\ 转义符号
将有特殊意义的符号转义成普通信息进行识别
将特殊的扩展正则符号转义成基础正则符号
将没有意义的信息转义成有特殊意义的信息
\n \r 换行符
\t 制表符
echo -e 扩展识别写入
将文件中以.结尾的信息过滤 grep ".$" oldboy_test.txt
[] 匹配多个字符信息 grep "oldb[oe]y" old_boy_test.txt
将以I开头和以m开头的行找出来 grep "^[Im]" oldboy_test.txt
[abc] ^[abc] [a-zA-Z0-9] [a-Z] ^[a-z].*[.!]$
[^] 排除括号中的信息
[^abc] ^[^abc]
sed/awk命令如何进行排除过滤
扩展正则符号
+ 匹配前一个字符连续出现了1次或者多次
grep "0*" oldboy_test.txt
egrep "0+" oldboy_test.txt
找出身份证信息输入错误的内容
egrep -v "[0-9]+" oldboy_test.txt
| 并且符号,用于匹配多个信息
egrep "oldboy|blog" oldboy_test.txt
()
指定信息进行整体匹配 egrep "oldb(oe)y" oldboy_test.txt
进行后项引用前项使用
批量创建用户 oldboy01..oldboy10
echo oldboy{01..10} | xargs -n1 | sed -r 's#(.*)#useradd \1#g' | bash
批量创建用户 oldboy01..oldboy10,并给每个用户设置密码信息,默认初始化密码(123456)
seq - w 10 | sed -r 's#(.*)#useradd oldboy\1;echo 123456 | passwd --stdin oldboy\1#g' | bash
echo 123456 转换为 <123456>进行显示
echo 123456 | sed -r 's#([1-6]+)#<\1>#g'
echo 123456 | sed -r 's#(.*)#<\1>#g'
echo 123456 转换为 <12><34><56>进行显示
echo 123456 | sed -r "s#(12)(34)(56)#<\1><\2><\3>#g"
echo 123456 | sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"
echo 123456 转换为 <12>34<56>进行显示
{} 可以指定字符连续匹配的次数
x{n,m} 表示前一个字符至少连续出现n次,最多出现m次
egrep "0+" oldboy_test.txt
egrep "0{2.3}" oldboy_test.txt
x{n} 表示前一个字符正好连续出现了n次
egrep "0{2}" oldboy_test.txt
x{n,} 表示前一个字符至少连续出现n次,最多出现多少次不限制
x{,m} 表示前一个字符至少出现0次,最多出现m次
? 定义匹配前一个字符出现0或者1次
* 匹配前一个字符出现0次或者多次
+ 匹配前一个字符出现1次或者多次(连续多次整体匹配) egrep
{} 匹配前一个字符指定出现多少次,至少0次 egrep
? 匹配前一个字符出现0次或者1次(连续多次1次次匹配) egrep
grep和sed命令直接识别扩展正则 \
利用ip address show eth0只把IP地址显示出来
ip address show eth0 | egrep "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+" -o | head -1
ip a s eth0 | egrep "([0-9]+\.\?){4}" -o | head -3 | tail -1
hostname -i