---
url: https://chenlj.top/md/install/linux/sed.md
---
# Sed 命令

原文

```
name=sanzhang
username=lisi
password=123456
#age=18
```

## 1.每行行头增加字符

命令

```shell
# 在每行行头增加【HEAD】  -i 在源文件上修改，没有-i则只会输出控制台
# abc  => HEADabc
sed 's/^/HEAD&/g' /opt/test.conf  -i
```

## 2.每行行尾增加字符

命令

```shell
# 在每行行尾增加【TAIL】 -i 在源文件上修改，没有-i则只会输出控制台
# abc  => abcTAIL
sed 's/$/&TAIL/g' /opt/test.conf  -i
```

## 3.匹配文字替换

命令

```shell
# 匹配每行的【a】，替换为【A】  -i 在源文件上修改，没有-i则只会输出控制台
#替换所有的a
sed 's/a/A/g' /opt/test.conf  -i
#只替换每行第一个a
sed 's/a/A/' /opt/test.conf  -i
# 将name=**配置项进行注释
sed "s/^name=.*/#&/g" /opt/test.conf  -i
```

## 对某项进行注释

命令

```shell
# 匹配每行的【a】，替换为【A】  -i 在源文件上修改，没有-i则只会输出控制台
# 将name=**配置项进行注释 => #name=**
sed "s/^name=.*/#&/" /opt/test.conf  -i
```

## 对某行后插入一行

```shell
grep -q '^#name=' /opt/test.conf && sed -i '/^#name=.*/a\name=wangwu' /opt/test.conf || echo 'name=wangwu' >> /opt/test.conf
```

## 2.删除每行回车（^M）

命令

```shell
# 在删除每行行尾回车（^M） -i 在源文件上修改，没有-i则只会输出控制台
sed 's/\r//' /opt/test.conf  -i
```

恢复测试原文

```shell
cat  >/opt/test.conf <<EOF
name2=sanzhang
username=lisi
password=123456
#age=18
EOF
```
