Shell编程之字符截取命令
2017-09-11 22:42
253 查看
AWK命令awk ‘条件1(动作1)条件2(动作2)...’ 文件名
条件(pattern)
一般使用关系表达式作为条件
x>10判断x是否大于10
x>=10大于等于
x<=10小于等于
动作(Action)
-格式化输出
-流程控制语句
awk使用示例:
awk '{printf $1 "\t" $2 "\n"}'
awk 'BEGIN{printf "test"}{printf $1}' //在输出语句前输出指定字符串
awk 'END{printf "test"}{printf $1}'//在输出语句后输出指定字符串
FS内置变量
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}'
//BEGIN在读取数据前先指定分隔符
FS内置变量设定分隔符
关系运算符
cat /etc/passwd | awk 'BEGIN{FS=":"}$3<300{printf $1 "\t" $3 "\n"}'
awk常用的内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
CUT命令cut字段提取命令
cut[选项] 文件名
选项:
-f 列号:提取第几列
-d 分隔符:按照指定分隔符分割列
df -h| cut -f 1(无法提取列)
cut命令适用比较规律的分割字段,如制表符
实际命令练习,备份创建过的用户
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":" user.log
SED命令
sed [选项] '[动作]' 文件名
选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理过的行输出到屏幕
-e:允许对输入数据应用多条sed命令编辑
-i:用sed命令的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
-a:追加,在当前行后添加一行或多行
-c:行替换,用c后面的字符串替换原数据行
-i:插入,在当前行前插入一行或多行,d:删除指定行
-p:打印,输出指定的行
-s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g"(和vim中的替换格式类似)// sed '5s/mbb/mb/g' user.log
printf命令(输出命令)printf命令(格式化输出命令)
printf ‘输出类型输出格式’ 输出内容
输出类型:
—%ns:输出字符串。n是数字指代输出几个字符
—%ni:输出整数。n是数字指代输出几个数字
—%m.nf:输出浮点数,m和n是数字,指代输出的整数位和小数位。如%8.2f代表共输出8位数,其中2位数是小数,6位是整数。
条件(pattern)
一般使用关系表达式作为条件
x>10判断x是否大于10
x>=10大于等于
x<=10小于等于
动作(Action)
-格式化输出
-流程控制语句
awk使用示例:
awk '{printf $1 "\t" $2 "\n"}'
awk 'BEGIN{printf "test"}{printf $1}' //在输出语句前输出指定字符串
awk 'END{printf "test"}{printf $1}'//在输出语句后输出指定字符串
FS内置变量
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}'
//BEGIN在读取数据前先指定分隔符
FS内置变量设定分隔符
关系运算符
cat /etc/passwd | awk 'BEGIN{FS=":"}$3<300{printf $1 "\t" $3 "\n"}'
awk常用的内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
CUT命令cut字段提取命令
cut[选项] 文件名
选项:
-f 列号:提取第几列
-d 分隔符:按照指定分隔符分割列
df -h| cut -f 1(无法提取列)
cut命令适用比较规律的分割字段,如制表符
实际命令练习,备份创建过的用户
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":" user.log
SED命令
sed [选项] '[动作]' 文件名
选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理过的行输出到屏幕
-e:允许对输入数据应用多条sed命令编辑
-i:用sed命令的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
-a:追加,在当前行后添加一行或多行
-c:行替换,用c后面的字符串替换原数据行
-i:插入,在当前行前插入一行或多行,d:删除指定行
-p:打印,输出指定的行
-s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g"(和vim中的替换格式类似)// sed '5s/mbb/mb/g' user.log
printf命令(输出命令)printf命令(格式化输出命令)
printf ‘输出类型输出格式’ 输出内容
输出类型:
—%ns:输出字符串。n是数字指代输出几个字符
—%ni:输出整数。n是数字指代输出几个数字
—%m.nf:输出浮点数,m和n是数字,指代输出的整数位和小数位。如%8.2f代表共输出8位数,其中2位数是小数,6位是整数。
相关文章推荐
- Shell编程-字符截取命令-printf命令
- Shell编程-字符截取命令-sed命令
- 第10章 Shell编程(2)_字符截取命令
- Shell编程 之 字符截取命令
- Linux学习日记 —— 11.2.1 Shell编程-字符截取命令-cut命令
- Shell编程-字符截取命令-awk命令
- Linux学习日记 —— 11.2.2 Shell编程-字符截取命令-printf命令
- Linux学习 -- Shell编程 -- 字符截取命令
- Linux学习日记 —— 11.2.3 Shell编程-字符截取命令-awk命令
- Linux学习---shell编程(06-字符截取命令)
- Shell编程-字符截取命令-cut命令
- shell编程-字符截取命令
- Linux学习日记 —— 11.3 Shell编程-字符处理命令
- 《Linux命令、编辑器与Shell编程》读书笔记3-linux命令中的特殊字符和正则表达式
- shell字符截取命令之cut命令
- Linux学习---shell编程(10-字符处理命令)
- Linux 字符截取命令 cut printf awk sed
- [Shell]字符截取命令:cut, printf, awk, sed
- Linux Shell编程-字符截取和处理命令
- shell字符截取命令之awk命令