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

本文共 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

你可能感兴趣的文章
Zookeeper 学习笔记之 Leader Election
查看>>
windws本地策略编辑器
查看>>
Ubuntu12.04下Linux内核模块动态加载
查看>>
yii2出现的400错误
查看>>
PYTHON1.day09
查看>>
复制、移动和删除:cp, rm, mv
查看>>
Return View()
查看>>
HDU 6156 回文 数位DP(2017CCPC)
查看>>
AndroidManifest.xml文件剖析
查看>>
沛齐的315面试题基础部分解答(一)
查看>>
bzoj2662 冻结
查看>>
(转)Odoo 是什么?
查看>>
浅谈当下7个网页设计趋势(转)
查看>>
2011年工作总结和展望(下篇)
查看>>
如何在VUE项目中使用SCSS
查看>>
开放源代码的设计层面框架Spring——day02
查看>>
[SP694][SP705]DISUBSTR - Distinct Substrings/SUBST1 - New Distinct Substrings[SA]
查看>>
JavaScript中的三种弹窗
查看>>
确认框,confirm工具封装
查看>>
常用css和js组件
查看>>