sed 、awk、grep实操

|grep -E 'match1|match2'

grep查找多个关键字

|awk -F': ' '{print $2}'`
|awk {'print $3'}`

从输出以冒号为分隔符打印第二列
从输出(以空格或制表符?)打印第三列

sed -n '/^[1-99]\:/p'
for i in {1..5};do sed 's/'$i'//p' file;done

匹配行首为“数字:”的行,并打印
for 与 sed混用,sed里的'$i'需要单括号,参考:https://www.unix.com/unix-for-dummies-questions-and-answers/39347-sed-loop.html

sed -r 's/.{19}//'

删除行首19个字符

sed -n '/match/,$p'
sed -n '0,/matched/s/matched[ ]*//p' file

截取match行到文本末尾
先选取开头到matched的行;再删除matched以及后续的所有空格

sed s'/^.//'
sed s'/.$//'

删除行第一一个字符
删除行最后一个字符

sed  -n "s/\ *$//p" file | sed -n "s/.*FirstChar\ //p" | sed 's|\(.*\)LastCharToEnd.*|\1|' | uniq |less
s/^[ ]*//

先去除每行行末所有空格;删除首行到FirstChar的内容;删除LastCharToEnd到行末的内容;去重
删除行首出现的所有空格

sed -ne '/123/{/234/p}' file

输出同时匹配123、234的行

sed -ne '/trash/d;/mnt/p' file |less

-e 实现多个
先去除带trash行,再显示匹配mnt行,并只显示匹配行,在用less打开

sed -e '/abc/!d;/bcd/!d;s/.*\ \:\ //;s/\:\ .*//' file

删除不匹配abc的行;再删除不匹配bcd的行;再去掉每行行首到“ : ”(最后出现的)的内容;再去掉每行“: ”到行末的内容

sed -n -e '/abc//{N;p;}'

列出匹配abc的行以及它的下一行


参考: https://www.theunixschool.com/2014/08/sed-examples-remove-delete-chars-from-line-file.html#:~:text=To remove 1st character in every line%3A %24,(any character) in the beginning of the line.

以下old

sed -n 's/^.*\/data/\/data/p' file

删除每行行首到“/data/”的内容
-n:输出只有经过sed特殊处理的一行,否则其他行都一并输出

sed -n 's/^.*\/data/\/data/;s/\:.*$//p' file

再前一个输出之上,再删除“:”到行末的内容

sed -n 's/.*\/data/\/data/;s/\:.*//p' file

行首^,与行末$不是必须,可以去掉

sed 's/^.*\/data/\/data/;s/\:.*//;/2022/d;/go/d' file

删除d不加-n

sed 's/\n/ \\/' file
or
sed 's/[[:space:]]/ \\/' file

替换空格为:空格\

sed 's/[[:space:]](/\\ \\(/;s/)/\\)/' file

替换空格(为:\空格(
基础上,替换)为:\)
操蛋的linux显示windows空格+括号路径...



fuction:编辑指令,可以为增删改查等指令

a 	新增	a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
d 	删除	d 后面通常不接任何内容;
s 	替换	通常这个s的动作可以搭配正规表示法!例如 1,20s/old/new/g。
p 	打印	亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~


c 	取代	c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
i 	插入	i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

动作说明

[n1[,n2]] function
其中[n1[,n2]]称为定址符,用来定义需要操作的文本,如指定处理的起、止行数。

n1, n2 不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作是需要在 10 到 20 行之间进行,则写作“10,20动作行为”。

地址可表示为文本的“行号”,或者用来匹配的“/正则表达式/”

省略定址符时,默认逐行处理全部文本。

基本的处理动作

image
替换担任的分隔“/”,可改用其他字符,如#、&等,便于修改文件路径

sed文本块处理

image
处理多行文本:修改后的文本有多行时,以换行符\n分隔,或使用\强制换行
# sed '/^HOSTNAME/cHOSTNAME=mysvr.tarena.com' /etc/sysconfig/network
^以HOSTNAME开头的行,替换成...

参考:
https://blog.csdn.net/jsut_rick/article/details/78287737

posted @ 2022-11-13 21:01  小黑狐狸1001  阅读(35)  评论(0编辑  收藏  举报