为了账号安全,请及时绑定邮箱和手机立即绑定
  • sed '4c cang bujige' student.txt //行替换

    sed '2,4s/F/M/g' student.txt //指定范围内的行进行字符串替换

    sed -3 's/furong/xx/g;s/fengji/yy/g' student.txt //-e选项,进行多条sed动作操作,动作之间用";"分隔

    sed '2d' test.txt #删除第二行

    sed '2,4d' test.txt #删除第二到第四行

    sed '2a input content' test.txt #在第二行后追加input content

    sed '2i input content' test.txt #在第二行前插入input content

    sed '2c input content' test.txt #将第二行替换为input content(替换一整行)


    各个动作都可以加上行号范围

    /g是指在指定范围内有多个旧字符串,就替换掉所有的,如果没有/g,就只替换第一个旧字符串

    多个动作之间可用“;”隔开


    查看全部
  • 【字符替换命令sed】

    sed是一种几乎包括在所有的UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。

    sed 选项 '动作' 文件名

    #''不能省略

    选项

    -n  #一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕

    -e  #允许对输入数据应用多条sed命令编辑(多个动作)

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

    动作

    a  #追加,在当前行后添加一行或多行

    c  #行替换,用c后面的字符串替换原数据行

    i  #插入,在当前行之前插入一行或多行

    d  #删除,删除指定的行

    p  #打印,输出指定的行

    s  #字符串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字符串/新字符串/g"(和vim中的替换格式类似)


    查看全部
  • FS内置变量

    查看全部
  • 在awk中,一般默认是制表符或者空格作为分隔符,假如说我们想要使用其他的符号作为分隔符,我们可以


    awk " {FS=":"}{printf $1 "\t" $3 "\n"}'这样:就变成了分隔符,{FS=":"}意思是这个:分隔符的别名起名为FS。


    当我们使用自己定义的分隔符时,一般都在条件前面加上BEGIN,否则第一行读取的数据会识别不了自己定义的分隔符,因此我们应该这样做awk "BEGIN {FS=":"}{printf $1 "\t" $3 "\n"}'


    查看全部
  • awk 'BEGIN{动作0}条件1{动作1}条件2{动作2}' 表示在所有动作之前先执行动作0,相应的还有END,表示在所有动作执行之后执行动作0。

    FS内置变量,用来指定分隔符;

    BEGIN可以在执行打印工作之前,首先指明分隔符,以打印出正确结果,例如:cat /etc/passwd|grep "/bin/bash"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}'

    查看全部
  • awk命令:

    awk是一个数据处理工具,相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个”字段“来处理。 

    通常运行模式: awk ' 条件类型1{动作1} 条件类型2{动作2}...‘ 文件名 

    例:awk '{printf $2 "\t" $4 "\n"}' filename awk '{print $2 "\t" $4}' filename 

    printf后面要接换行符"\n" print 不需要


    awk命令的格式

    1.awk '条件1{动作1}条件2{动作2}……’ 文件 其中转义符\n等需要用双引号括起来才可以生效

    2.在printf中$1 代表打印第一个字段。也就是说字段是以空格为分割的。

    3.其中把文件的文件名赋予了$0变量

    4.print命令可以比printf命令在一行的末尾自动加入换行符


    查看全部
  • print命令和printf命令

    查看全部
  • printf命令用法

    查看全部
  • printf输出格式说明

    查看全部
  • printf格式化输出

    printf命令 --> 格式化输出命令 

    printf "输出类型输出格式" 输出内容 

    输出类型: 

    %ns:输出字符串。n是数字,指代输出几个字符 

    %ni:输出整数。n是数字,指代输出几个数字 

    %m.nf:输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2是小数位数,6位是整数 

    输出格式: 

    \a:输出警告声音 

    \b:输出退格键,也就是Backspace键 

    \f:清空屏幕 \n:换行 

    \r:回车,也就是Enter键 

    \t:水平输出退格键,也就是Tab键 

    \v:垂直输出退格键,也就是Tab键 

     printf '%s\t%s\t%s\n' 1 2 3 4 5 6 --> 此时才会正确输出: 

    1 2 3 

    4 5 6 

    使用printf输出命令,必须明确指出所有的格式 

    如果想要使用printf读取文件中的内容就需要:

    printf '%s' $(cat student.txt)  不调整输出格式 

    printf '%s\t%s\t%s\t%s\n' $(cat student.txt) 调整输出格式  

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

    print在输出之后会在自动加入换行符,但Linux系统中默认没有print命令 

    printf是标准格式输出命令,并不会自动加入换行符,如需换行,需要手动加入换行符


    查看全部
  • cut [选项] 文件名 

    -f 列号:提取第几列(从1开始) 

    cut -f 列号,列号 (多个列号用逗号隔开;这个方法默认的文件以TAB制表符) 

    cut -f 列号,列号 -d "指定的分隔符" (比如图中,以:为分隔符;列出第1,和第3列的内容) 


    查看全部
  • grep行提取,cut列提取; 

    cut [选项] 文件名 

    -f 列号:提取第几列(从1开始) 

    cut -f 列号,列号 (多个列号用逗号隔开;这个方法默认的文件以TAB制表符) 

    cut -f 列号,列号 -d "指定的分隔符" (比如图中,以:为分隔符;列出第1,和第3列的内容) 

    -d 分隔符:按照指定分隔符分割列 默认为tab制表符

    grep "bin/bash" /etc/passwdgrep -v "root"cut -f 1 -d ":" 提取非root登录用户用户名;


    查看全部
  • 正则实例

    正则表达式适合在文档中提取,不适合做写入的判断依据 

    匹配日期:"[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" 

    匹配IP地址:"^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" 

    还可以匹配电话号码、邮件地、URL地址信息等

    匹配时间格式:grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" test.txt 

    匹配IP地址:    grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" test.txt 

    IP地址最大为255.255.255.255,所以这个正则只能用于从文档中提取IP地址,不能用来写入 vi清空所有行的快捷键:先d后G



    查看全部
  • 正则表达式规则

    查看全部
  • 1、转义符“\”:让特殊的符号丧失它的作用,只是表示这个符号本身

    "\.$"   #匹配以.结尾的行

    2、“\{n\}”:表示其前面的字符恰好出现n次

    "a\{3\}"   #匹配a字母连续出现三次的字符串

    "[0-9]\{3\}"   #匹配包含连续的三个数字的字符串,最好加上定界符,即左右加上匹配的字母,如"a[0-9]\{3,\}b",否则易匹配错误,因为正则是包含匹配

    3、“\{n,\}”表示其前面的字符出现不小于n次

    "^[0-9]\{3,\}[a-z]"   #匹配最少用连续三个数字开头包含小写字母的行

    4、“\{n,m\}”匹配其前面的字符出现n-m次的行

    "sa\{1,3\}i"   #匹配以s开头、i结尾,且s和i之间有1-3个a的行


    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程前,还请大家学习慕课网《Tony老师聊shell》系列的前三篇课程!
老师告诉你能学到什么?
1、掌握shell中的正则表达式 2、掌握常用字符截取命令的使用 3、掌握常用字符处理命令的使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!