sed 常用命令

355 阅读1分钟

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