1. 在文件中的指定行(首行、末尾行等)插入内容
首行:
sed -i '1i\$JAVA_OPTS="${JAVA_OPTS} -Duser.timezone=GMT+08"' 文件名
尾行:
echo "haha" >> 文件名
指定行(N):
sed -i 'Ni\$JAVA_OPTS="${JAVA_OPTS} -Duser.timezone=GMT+08"' 文件名
2. 输出第 N 行内容
sed -n Np 文件名
3. 输出第 M 行到第 N 行的内容
sed -n 'N,M'p 文件名
4. 删除每行前 N 个字符
方法有二个:
1、^.表示开头1个字符,n个.即表示n个字符。
sed -i 's/^..//g' old.txt #删除每行前2个字符,old.txt发生改变。不生成新文件。
2、正则表达式
sed 's/^.\{10\}//g' old.txt > new.txt #删除old.txt中每行的前10个字符,重定向到new.txt。old.txt不发生改变
5. 删除重复行
sort -n test.txt | uniq
注意:用sort+uniq,注意,单纯uniq是不行的。
6. 替换最后一次出现的字符
如:把最后一个 1 替换成 a
sed 's/\(.*\)1\(.*\)/\1a\2/' yourfile
第一个匹配的括号内容使用标记 \1 来引用,第二个匹配的括号内容使用标记 \2 来引用
7. 在第四行添加命令
sed -i '4i auth required pam_tally2.so deny=5 unlock_time=120' /etc/pam.d/system-auth
8. 删除第4行
sed -i '4d' /etc/pam.d/system-auth