标签:new rip ast 处理流程 字符串 统一 eth0 conf 添加空格
文本或管道输入—-读入一行到模式空间(临时缓冲区)—-sed命令处理—–输出到屏幕—-读入一行到模式空间—–循环
-p: –/etc 下的passwd文件
a(新增行)/i(插入行)
c(替代行)
d(删除行)
练习:profile文件中最后一行添加内容——–$表示最后一行,内容前面如果需要加空格,那么在a后面 加\ 然后在加空格
eg:sed -n ‘$a\ export TOMCAT_HOME=XXXXX\n export PATH=$PATH:$TOMCAT’ profile >> profile
eg:sed -i ‘$a\ export TOMCAT_HOME=XXXXX\n export PATH=$PATH:$TOMCAT’ profile
练习:删除空白行—–^代表开始,$代表结束
eg:sed ‘/^$/d’ passwd
练习:服务器日志处理,log中打印error信息
eg:sed -n ‘/error/p’ file.log
s:
练习:获取eth0中的ip .*代表所有的
eg:ifconfig | sed -n ‘/inet.*broadcast/p’ | sed ‘s/inet\s\+//’ | sed ‘s/\s\+netmask.*//’
先获取有ip的那行,然后把ip前面替换成空,后面替换成空,空格占位符是\s,+代表一个以上且要转义。
{}:多个sed命令,用;隔开,然后用{}括起来。
eg:nl -b a passwd | sed ‘{10,20d;s/:/%/g}’
删除10-20行,并且把:替换成%。(不加{}也可以)
eg:nl -b a passwd | sed -n ‘{n;n;p}’
读取下一个输入行
&:替换固定的字符串,代表前面匹配的字符
eg:sed ‘s/^[a-z_-]\+/& /’ passwd
用户名后面统一添加空格
练习:将用户名的首字母转换为大写
\u \l:对首字母转成大写或小写
\U \L:对一串字符转成大写或小写
eg:sed ‘s/^[a-z_-]\+/\u&/’ passwd
eg:ls | sed ‘s/.*/\U&/’
():需要转义\(\),代表替换某部分字符串(\1\2)
eg:sed ‘s/w1\(w2\)\(w3\)/\1\2/’ xxx.txt
练习:获取eth0中的ip
eg:ifconfig | sed -n ‘/inet.*broadcast/p’ | sed ‘s/inet.*\s\+\([0-9\.]\+\)\s\+netmask.*/\1/’
注意:如果取值前面包含空格使用.*不好使,需要\s\+代表空格,否则取不到值。
eg:ifconfig | sed -n ‘/inet.*broadcast/p’ | sed ‘s/inet\s\+\([0-9\.]\+\).*netmask\s\+\([0-9\.]\+\).*broa*.*\s\+\([0-9\.]\+\)/\1/’
替换\1\2\3取不同的值
练习:获取passwd文件中,用户名、uid、gid
eg:sed ‘s/\(^[a-z_-]\+\):x:\([0-9]\+\):\([0-9]\+\).*/\1 \2 \3/’ passwd
r:读取指定文件插入到匹配行
sed ‘1r 123.txt’ abd.txt
读文件不会更改文件内容 1r 代表从第几行开始
w:复制匹配行拷贝到指定文件里
sed ‘1w 123.txt’ abc.txt 复制abc文件的第一行到123的文件中去,123文件内容会变化。
写操作会清除目标文件内容,然后再写内容进去。
q:退出sed,使用q可以提前退出sed
nl -b a passwd | sed ’10q’ 打印前10行。
nl -b a passwd | sed ‘/false/q’ 打印直到出现false为止
e:
nl -b a passwd | sed -e ‘10,20d’ -e ‘s/:/%/g’
标签:new rip ast 处理流程 字符串 统一 eth0 conf 添加空格
原文地址:https://www.cnblogs.com/xiaowenshu/p/9957084.html