sed练习
先猜后看(不贴图,重在实践)
cat -n /etc/passed | sed '2,5d' # 将2~5行删除后显示
cat -n /etc/passwd | sed '2a Hello Friends' # 在第2行后面一行加上"hello friends"字符串
cat -n /etc/passwd | sed '2,4c 自律者自由' # 将第2~5行内容替换成指定串
cat -n /etc/passwd | sed -n '5, 8p' # 只显示第5~8行
ip addr | grep 'inet ' | awk -F ' ' 'NR==2{print $2}' # 获取ip
sed 's/^[ ]*//g' top.txt sed 's/^ *//g' top.txt # 删除每行行首的空格
sed -e 's/$new/$old/g' top.txt
sed -i '1 i\阿萨' top.txt # 必须有i\
sed -i '$a\尾部追加' top.txt
sed -i '/pattern/ i "阿萨"' top.txt # 在匹配行前插入
sed -i '/pattern/ a "阿萨"' top.txt # 在匹配行尾追加
grep -v ^# top.txt | sed '/ * $/d' | sed /^$/d # 删除#开头的行以及空格行、空行
sed -i 's/阿萨姆/八八八八/g' top.txt # 替换所有的阿萨姆
sed -i '13,15 s/^/# /' top.txt # 在指定行区间行首加#号
sed -i '13,15 s/# //' top.txt # 在指定行区间行首删除#号
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -i 's/^max_input_time = 60/max_input_time = 300/g' /etc/php.ini
备注: g表示每一行所有与之匹配的行都会被替换掉, 不加g, 每行只替换第一个
案例:从xxx中复制粘贴后的内容行标识符和空行
:%s/^[0-9][0-9]* // # 替换行号
sed -i 's/^ * //' top.txt # 删除行首空格和空行,注意空格
案例: 使用Sed分析指定起始时间段的secure日志
cat /var/log/secure | sed -n '/15:50:06/, /15:58:12/p'