博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk-sed
阅读量:6412 次
发布时间:2019-06-23

本文共 2959 字,大约阅读时间需要 9 分钟。

sed

# 先读取资料、存入模式空间、对其进行编辑、再输出、再用下一行替换模式空间内容

-n  #不再显示模式空间中的内容(默认显示)

-i  #直接对文本编辑

-r  #正则可不转换特殊字符

--follow-symlinks  #修改软链接文件时 

匹配字符出现的次数

*  #任意多个字符

?  #0或者1个 最小匹配,没有加-r参数需要转义 \?

$  #最后一行

^  #开头行

.*  #匹配任意多个字符

.  #任意单个字符

^$  #空行

 

\?  #0或者1次

\+  #至少出现1次

\{3\}  #精确出现3次

\{2,5\}  #出现2-5次

\  #转义符号

command

d

删除符合条件的行#sed '1,2d' a.txt删除文件中包含oot的行#sed '/oot/d' a.txt删除第一行及其后两行#sed '1,+2d' a.txt删除第一行#sed '1d' a.txt

 p

显示符合条件的行显示以/开头的行#sed -n '/^\//p' a.txt

 a \string

在符合条件的行后面追加新行。string为追加的内容在以/开头的行后面追加新行,#hello worldsed '/^\//a \#hello world' a.txt在以/开头的行后面追加两行内容,分别为# hello worl  # hello linux # sed '/^\//a \# hello world\n# hello linux' a.txt

i \string

在符合条件的行前添加新行,string为追加的内容在文件第1行添加# hello world # sed '1i \# hello world' a.txt

c \string 

替换指定行的内容将文件中最后一行内容替换为End Of File# sed '$c \End Of File' /1.txt    # sed '7c \SELINUX=disabled' /etc/sysconfig/selinux

=

用于显示每一行的行号显示/etc/passwd文件最后一行的行号# sed -n '$=' /etc/passwd49

s/regex/string/[修饰符] 查找并替换 默认情况下,只替换每一行第1次出现的字符

修饰符:
g:替换每一行所

i:忽略大小写

[root@localhost ~]# sed 's/^#/?/' /etc/fstab 查找文件中的UUID,并替换为uuid# sed 's/UUID/uuid/' /etc/fstab    将行首的/替换成## sed 's/^\//#/' /etc/fstab    [root@localhost ~]# sed 's|/|#|g' /etc/fstab 将每一行出现的所有/替换为@# sed 's/\//@/g' /etc/fstab 删除行首的空格[root@shellscript ~]# sed 's|^#||' /etc/fstab [root@shellscript ~]# history | sed 's|^[[:space:]]\+||'

 

awk

1、awk内置变量之记录变量

FS:  指定读取文件时的分隔符,默认空白字符,相当于-F

OFS:  指定输出的分隔符,默认空白字符

[root@localhost ~]# head -n 1 /etc/passwd | awk -F: '{print $1,$7}'

root /bin/bash
[root@localhost ~]#
[root@localhost ~]# head -n 1 /etc/passwd | awk 'BEGIN{FS=":"}{print $1,$7}'
root /bin/bash

[root@localhost ~]# head -n 1 /etc/passwd | awk -F: '{print $1,$7}'

root /bin/bash
[root@localhost ~]# head -n 1 /etc/passwd | awk -F: 'BEGIN{OFS="---"}{print $1,$7}'
root---/bin/bash

 

2、awk内置变量之数据变量

NR:记录awk所处理的文本的行数,如果有多个文件,所有文件统一进行计数

[root@localhost ~]# awk '{print "第",NR,"行内容:",$0}' /etc/hosts /etc/issue

第 1 行内容: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
第 2 行内容: ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
第 3 行内容: CentOS release 6.6 (Final)
第 4 行内容: Kernel \r on an \m
第 5 行内容:

注意:

print在显示变量值时,不需要使用$

FNR:记录awk正在处理的文件的行数,如果有多个文件,每个文件分别进行计数

[root@localhost ~]# awk '{print "第",FNR,"行内容:",$0}' /etc/hosts /etc/issue

第 1 行内容: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
第 2 行内容: ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
第 1 行内容: CentOS release 6.6 (Final)
第 2 行内容: Kernel \r on an \m
第 3 行内容:

 

NF:记录awk正在处理的当前行被分隔成了几个字段

# cat test.txt
this is a test.
# awk '{print NF}' test.txt
4
# awk '{print $NF}' test.txt
test.

 

[root@localhost ~]# awk -F: '{print "Number of line: ", NF}' /etc/passwd

[root@shell ~]# awk -F. '{print "Number of Line: ", NF}' /etc/hosts

[root@shell ~]# awk 'BEGIN{FS="."}{print "Number of Line: ", NF}' /etc/hosts
Number of Line: 6
Number of Line: 3
Number of Line: 6

 

转载于:https://www.cnblogs.com/charon2/p/10367005.html

你可能感兴趣的文章
js复制
查看>>
JavaScript,只有你想不到
查看>>
Triangle
查看>>
web.xml 中元素加载顺序及其详解
查看>>
[原]浅谈几种服务器端模型——多线程并发式(线程池)
查看>>
tmux 常用快捷键
查看>>
linux下端口转发工具
查看>>
spring 中实现文件上传
查看>>
JAVA调用lp_solve配置详解
查看>>
BMP文件格式详解(BMP file format)
查看>>
25. [Microsoft][ODBC SQL Server Driver][DBNETLI...
查看>>
android开发过程中遇到错误的笔记
查看>>
JS实现继承的几种方式
查看>>
Spring MVC 4.x + fastjson 1.2.7,封装的List<?>参数
查看>>
svn培训
查看>>
js选中问题
查看>>
CentOS 7 Shell脚本编程第二讲 Shell 脚本创建和执行
查看>>
protobuf
查看>>
4.Java基础复习--Set
查看>>
七:Mysql的乐观锁与悲观锁机制
查看>>