Shell编程
来源:互联网 发布:mac系统剪切文件 编辑:程序博客网 时间:2024/05/16 02:43
Shell编程
正则表达式
字符截取命令
字符处理命令
条件判断
流程控制
一、正则表达式
1正则表达式:用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed等命令可以支持正则表达式
grep “size” anno...
会出现完整的一行
通配符:用来匹配符合条件的文件名,通配符是完全匹配。ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来匹配了。
*,?,[]
2、基础正则表达式
* 前一个字符匹配0次或任意多次
. 匹配除了换行符外任意一个字符
^ 匹配行首。
$匹配行尾
[]匹配一个字符
[^]匹配除了括号的字符外的任意一个字符。[^0-9]匹配任意一位非数字字符
\ 转义符,用于取消特殊符号的含义取消
\{n\} 表示其前面的字符恰好出现n次。[0-9]\{4\}匹配4位数字,
\{n,\} 表示其前面的字符出现不小于n次,例如[0-9]\{2,\}
\{n,m\}表示其前面的字符至少出现n次,最多出现m次。
* grep “a*” test.txt
输出所有的内容,包括空白行
* grep “aa*” test.txt
匹配至少1个a
. grep “s..d ” text.txt
匹配在s和d这两个字母之间一定有两个字符的单词
. grep “s.*d ” text.txt
匹配在s和d字母之间有任意字符
. grep “.* ” text.txt
匹配所有
^ grep "^M" test.txt
匹配以大写字母M开头的行
grep “n$” text.txt
匹配以n结尾的行
grep-n'^$” text.txt
匹配空白行
[] grep-n's[ao]id” text.txt
匹配said 或者soid
[^] 匹配取反
^[^a-z]
\ grep '\.$' test.txt
以.结尾的
\{n\} grep "a\{3\}" test.txt
\{n,m\} grep “sa\{1,3\}i” test.txt
匹配在字母s和字母i之间有最少一个a 最多三个a
字符截取命令
cut命令
printf命令
awk命令
sed命令
cut 选项 文件名
-f 提取第几列
-d 分隔符 按照指定分隔符分割列
TAB键
cut -f 2 tset.txt
cut -d ":' -f 1,3 /etc/passwd
cat /etc/passed 丨 grep /bin/bash 丨 grep -v root #取反 丨 cut -d ":" -f 1
删除普通用户
df -h 查看文件系统 丨 grep “sda5” 丨 cut -f 5 #不能识别空格
printf命令
格式化打印命令
printf '输出类型,输出格式' 输出内容
printf '%s' $(cat a.txt)
输出类型
%ns 输出字符串
%ni 输出整数
%m.nf 输出浮点数,m数字总数,n小数位数
输出格式
\a发出警告 \t 水平输出退格键tab
\b输出退格键 \r 回车
\n换行 \v
awk命令输出中支持print和printf。
print自动添加换行符,系统没有
printf手动添加换行符
awk
先读入第一行
截取符合条件的列
awk ‘条件1{动作1}条件2 {动作2}条件3{动作3}’ 文件名
动作
格式化输出
流程控制语言
awk ‘{printf $2 "\t" $6}’student.txt
BEGIN#之前执行一次
awk 'BEGIN {printf "This is a transcript \n"}
{printf $2 "\t" $6 "\n"}' student.txt
FS内置变量
cat /etc/passwd 丨grep "/bin/bash" 丨 \awd 'BEGIN {FS=":" }{printf $1 "\t" $3 "\n"}'
END
cat /etc/passwd 丨grep "/bin/bash" 丨 \awd 'BEGIN {FS=":" }END {printf "aaaaaaaa"}{printf $1 "\t" $3 "\n"}'
关系运算符
awk ‘$6 >=87 {printf $2 "\n"}’
sed命令
流编辑器
将数据进行选取、替换、删除、新增
vi 修改文件,不可把命令的结果写到文件中
sed 选项 ‘动作’ 文件名
-n 一般sed命令会把所有的数据都输出到屏幕上。只输出sed处理的
-e 允许对输入数据应用多条sed命令编辑
-i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
a\ : 追加 c\:行替换 i\:插入 d:删除 p:打印 s:字串替换
sed -n ‘2p’ std.txt
输出第二行 #行操作
df -h 丨 sed -n ‘2p’
sed ‘2,4d’ stf.txt
#删除行 ,不会影响文件本身
sed ‘2a hello ’ std.txt
追加
sed ‘2i hello world’ std.txt
插入
都没有修改文件本身
sed ‘4c no person’ std.txt
替换行
sed ‘s /’
- shell 以及shell编程
- Shell和Shell编程
- 【shell】shell 编程基础
- Shell及其Shell编程
- Shell编程
- Shell编程
- Shell编程
- shell编程
- Shell编程
- Shell编程
- shell 编程
- Shell编程
- Shell编程
- shell编程
- shell编程
- Shell编程
- shell编程
- Shell 编程
- "List cannot be resolved to a type"错误的解决方法
- 用List模拟实现STL下的queue队列
- Matlab图像二值化
- 看书打的Palindromes
- CentOS7搭建DNS服务器
- Shell编程
- 算法训练 摆动序列
- Linux(Ubuntu16.04)+MySQL Community Server 5.7.17安装(使用MySQL5.7deb安装包)
- 衡量模型泛化能力的评价标准
- Spring MVC返回XML格式的数据
- hdu2391(dp)
- 事件event
- onunload和onbeforeunload方法的区别
- 链表插入排序-LintCode