b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

shell字符串拦截摘要

电脑杂谈  发布时间:2020-04-29 11:07:37  来源:网络整理

awk 调用shell命令_shell截取字符串 awk_shell 正则表达式 grep sed awk

有很多方法可以在shell中拦截字符串,我将对其进行总结和总结.

0x01,grep

在文件中搜索与字符串匹配的行并输出

Linux中的grep命令是功能强大的文本搜索工具. 它可以使用正则表达式搜索文本并打印匹配的行. grep的全名是Global Regular Expression Print,表示全局正则表达式版本,其使用权是所有用户.

grep [选项] [指定的字符串] [文件]

-i不区分大小写

-v排除指定的字符串

-c: 仅输出匹配行数.

-n: 显示匹配的行和行号.

-s: 不显示不存在或没有匹配文本的错误消息.

grep支持正则表达式. 以下总结了正则表达式和通配符.

正则表达式

正则表达式用于匹配与文件中的条件匹配的字符串. 正则表达式包含匹配项. grep,awk和sed等命令可以支持正则表达式.

通配符

通配符用于匹配符合条件的文件名. 通配符是完全匹配. 命令ls,findshell截取字符串 awk,cp不支持正则表达式,因此只能使用shell通配符进行匹配.

通常一些符号和通配符很常见,但是含义完全不同

基本正则表达式

上一个字符匹配0或任意次数

匹配除换行符之外的任何字符

匹配行的开头. 例如,^ hello将匹配以hello开头的行

匹配行尾,例如hello将匹配以hello结尾的行

匹配括号中的任何字符,并且仅匹配一个字符.

匹配除方括号字符之外的任何字符. 例如,[^ 0-9]匹配任何非数字字符

awk 调用shell命令_shell截取字符串 awk_shell 正则表达式 grep sed awk

转义字符. 用于取消特殊符号的含义

n是一个非负数,与前一个字符精确匹配n次. 例如,o {2}与食物中的两个o匹配

表明它前面的字符出现不少于n次

至少匹配n次,最多匹配m次

需要注意的是,通配符的*表示任意字符,而正则表达式的*是匹配钱一个字符0次或者任意多次
grep "s*" anaconda-ks.cfg  显示的不是包含有s的行,而是显示了整个文件,“s*”匹配s的0次或多次

wKiom1f6RdaT3X6gAABh-OoO3zM168.png

grep "size*" anaconda-ks.cfg匹配了e的0次或多次,但至少需匹配siz字符串

wKioL1f6RfKiEwFnAAAP-3uht8c349.png

“.”匹配除了换行符外任意一个字符,和通配符的?相同,“.*”就才和通配符中的“*”作用相同

grep提取行,cut和awk提取列

0x02,剪切

cut是一个选择命令,用于分析一条数据并取出我们想要的内容. 通常,信息选择通常是针对“行”而不是整个信息分析进行分析

剪切[options]文件名

-f列号以提取前几列

-d分隔符根据指定的分隔符拆分列(默认情况下使用tab键)

wKioL1f6RimSYT9pAAAr2cDUiEo928.png

和grep结合使用,cat /etc/passwd | grep /bin/bash | grep -v root | cut -d":" -f 1

wKiom1f6RlHRdYNPAAArdoqHC_E482.png

剪切命令的限制行

cut命令不能很好地分隔空格字符. 您可以使用awk命令来解决

0x03,awk

它具有与cut命令相同的效果. 它拦截符合条件的列. grep截取满足条件的行,但是cut有一些限制. 锥子还可以被制表符,冒号和其他定界符拦截. 该功能比cut功能要强大得多,但是awk是一个非常复杂的命令,它不仅可以实现字符串的拦截,还可以在awk命令中进行编程和调用. 最常见的是功能和判断. 因此,awk一直是awk编程. 但是,如果仅是对列的简单拦截,并且没有用空格分隔,则cut命令会更简单.

awk是功能强大的文本分析工具. 与grep搜索和sed编辑相比,awk在分析数据和生成报告时特别强大. 简而言之,awk逐行读取文件,将每一行切成空格作为默认分隔符,然后对剪切的部分执行各种分析处理.

shell 正则表达式 grep sed awk_shell截取字符串 awk_awk 调用shell命令

awk’条件1 {动作1}条件2 {动作2} ...’文件名

条件

关系表达式通常用作条件

x> 10确定变量x是否大于10

x> = 10大于或等于

x <= 10小于或等于

动作

格式化输出

流控制语句

wKioL1f6Rqbi5ZfRAAAQkKrLZGk612.png

$ 1代表第一列,$ 2代表第二列,$ 0代表整行

FS内置变量

awk '{FS=":"}{print $1"\t" $3}' /etc/passwd,使用FS=””,指定分割符,第一行已经读完,用冒号分割已经来不及了,默认的用空格分割,后面的用冒号分割,在
FS之前强制加个BEGIN

wKiom1f6RtPx9WjXAAAjQByHUrw589.png

关系运算符

cat /etc/passwd | awk '{FS=":"} $3>=500 {printf $1"\n"}'

wKioL1f6RvGAOk9EAAARGRWHr8E086.png

0x04,printf

printf是awk中的标准输出格式

printf“输出类型输出格式”输出内容

输出类型:

%ns: 输出字符串,n是一个数字,表示输出几个字符

%ni: 输出是整数,n是一个数字,表示输出多个数字

awk 调用shell命令_shell截取字符串 awk_shell 正则表达式 grep sed awk

%m.nf: 输出浮点数. m和n是数字,是指输出的整数和小数位数. 添加8.2f%表示总共输出8位数字shell截取字符串 awk,其中2位数字是小数,6位数字是整数.

输出格式:

\ a: 输出警告声音

\ b: 输出退格字符,即退格键

\ f: 清除屏幕

\ n: 换行符

\ r: Enter,这是Enter键

\ t: 水平输出退格键,即Tab键

\ v: 垂直输出退格键,即Tab键

wKiom1f6RnvBnTvHAAALB3G0S_Q535.png

在awk命令的输出中支持print和printf命令

打印: 打印将在每个输出之后自动添加换行符(Linux默认没有打印命令)

printf: printf是标准格式的输出命令,不会自动添加换行符. 如果需要换行符,则必须手动添加.

0x05,sed

sed是几乎所有unix平台(包括linux)上都包含的轻量级流编辑器. sed主要用于选择,替换,删除和添加新数据.

vim也可以选择,删除,替换等,但是vim只能修改文件,而不能直接修改命令的结果,需要将命令保存到文件中,然后再修改文件. 并且sed可以从管道字符接收数据进行修改

wKioL1f6RzuCFAIlAAAKoBrgM_c982.png

sed [option]'[action]'文件名

常用选项

-nGeneral sed命令将所有数据输出到屏幕,添加此参数将仅将sed命令处理的行输出到屏幕

-e允许将多个sed命令应用于输入数据

-i使用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:

shell截取字符串 awk_shell 正则表达式 grep sed awk_awk 调用shell命令

a \: 追加,在当前行之后添加一行或多行. 当添加多行(最后一行除外)时,每行的末尾都需要标记“ \”以表示数据不完整.

c \: 该行应使用\”表示数据的结尾.

替换,将原始数据行替换为c之后的字符串. 替换多行(最后一行除外)时,每行的末尾都需要i \: 插入,在当前行之前插入一行或多行,插入多行时,除最后一行外,每行的末尾都必须为标记为“”作为数据的结尾.

d: 删除,删除指定的行.

p: 输出并打印指定的行.

s: 字符串替换,用一个字符串替换另一个字符串. 格式为“行范围s /旧字符串/新字符串/ g”(类似于vim中的替换格式).

sed -n "1p" /etc/passwd ,查看etc/passwd中的第一行,如果不加-n参数,显示这条操作外,还会显示文件的全部内容,加-n
只会显示处理的行

wKiom1f6R2Tx7pjFAAAJvLESAHw843.png

sed "2,36d" /etc/passwd ,删除第二行到第四行的数据,但不修改文件本身,只有加了-i参数才会修改文件本身

wKiom1f6R4GA4WI3AAAJ0wXpjvk014.png

添加了动作a和i,在行的末尾添加了a,在行的前面插入了i,但是文件本身不会被修改,只会首先显示修改内容,并且不添加-n除了显示修改过的数据的老虎外,还将显示文本的所有数据.

wKioL1f6R52jfz_JAAAWelHEwgU265.png

wKiom1f6R7LQXMXsAAASrodbDQE234.png

动作c和动作s用于替换,c用于行替换,s用于字符串替换,并且字符替换格式为sed“ s / old string / new string / g”文件名,在s之前指定行,您只需要更改指定的行,否则就将修改所有行.

wKiom1f6R-KweIekAAAQb5sbLjc675.png

wKioL1f6R_fDXZmeAAANo3vu9dY677.png

0x06,排序命令

对[选项]文件名进行排序

选项

-f忽略大小写

-n按数字类型排序,默认为使用字符串排序

-r反向排序

-t指定定界符,默认使用tab键

-k n [,m]根据指定的字段范围排序,从第n个字段开始,到第m个字段结束,不添加m,默认值为行的结尾

wKioL1f6SBTB0-4eAAA1TV_X5ms089.png

sort -t ":" -k 3,3 /etc/passwd,仔细看,没把uid当作字符串对待,而当数值型对待,需要加-n参数


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-192895-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...