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动作行为”。
地址可表示为文本的“行号”,或者用来匹配的“/正则表达式/”
省略定址符时,默认逐行处理全部文本。
基本的处理动作
替换担任的分隔“/”,可改用其他字符,如#、&等,便于修改文件路径
sed文本块处理
处理多行文本:修改后的文本有多行时,以换行符\n分隔,或使用\强制换行
# sed '/^HOSTNAME/cHOSTNAME=mysvr.tarena.com' /etc/sysconfig/network
^以HOSTNAME开头的行,替换成...
参考:
https://blog.csdn.net/jsut_rick/article/details/78287737