以前linux命令都是硬记,用多了也就记住了。在网上看到说是命令转换成单词来记忆会很简单,试了下果然如此,豁然开朗了佬友们。
不知道大家是不是都是这样记得,万一有硬记的佬友一定不要像我一样。
举例下边是让GPT用sed命令做的一个文档,是不是很好记忆。
sed 入门教程(带字母含义与正则解释)
一、什么是 sed
sed 全名:
stream editor
含义:
单词 意思 stream 数据流 editor 编辑器它不是打开文件编辑。
而是:
读取 → 处理 → 输出
所以叫:
流编辑器
它会:
一行一行读取
一行一行处理
非常适合:
- 批量替换
- 修改配置文件
- 删除内容
- 日志处理
- 自动化脚本
二、sed 基础结构
sed '命令' 文件
例如:
sed 's/aaa/bbb/' test.txt
意思:
把 aaa 替换成 bbb
三、最核心命令:s
替换命令
s/旧内容/新内容/
字母含义
字母 全称 意思s
substitute
替换
等于:
substitute old with new
示例
echo "hello world" | sed 's/world/linux/'
输出:
hello linux
四、g 全局替换
sed 's/aaa/bbb/g'
字母含义
字母 全称 意思g
global
全局
默认:
每行只替换第一个
加 g:
每行全部替换
示例
echo "aaa aaa aaa" | sed 's/aaa/bbb/g'
输出:
bbb bbb bbb
五、-i 直接修改文件
sed -i 's/old/new/g' file.txt
字母含义
参数 全称 意思-i
in-place
原地修改
不加:
只输出结果
不修改文件
加了:
直接改文件
六、p 打印
sed -n '2p' file.txt
字母含义
字母 全称 意思p
print
打印
参数 -n
参数 全称 意思-n
quiet/silent mode
不自动输出
默认:
sed 会输出每一行
加 -n:
只输出你指定的内容
示例
sed -n '1p' file.txt
意思:
只打印第一行
七、d 删除
sed '2d' file.txt
字母含义
字母 全称 意思d
delete
删除
示例
删除空行:
sed '/^$/d' file.txt
八、i 插入
sed '2i hello'
字母含义
字母 全称 意思i
insert
插入
意思:
在第2行前插入
九、a 追加
sed '2a hello'
字母含义
字母 全称 意思a
append
追加
意思:
在第2行后追加
十、c 修改整行
sed '2c new line'
字母含义
字母 全称 意思c
change
修改
十一、正则里的特殊字符
点号 .
.
含义
符号 意思.
任意单个字符
所以:
a.c
可以匹配:
abc
axc
a1c
十二、转义 \
\.
含义
符号 全称 意思\\
escape
转义
意思:
后面的字符别特殊化
按普通字符处理
示例
IP:
192.168.1.1
必须写:
192\.168\.1\.1
否则:
.
会匹配任意字符。
十三、^ 和 $
^
^
含义
符号 意思^
行开头
$
$
含义
符号 意思$
行结尾
示例
空行:
^$
意思:
开头后立刻结束
中间没有字符
即:
空行
十四、 字符集合
[0-9]
含义
表达式 意思[0-9]
任意数字
[a-z]
小写字母
[A-Z]
大写字母
示例
sed 's/[0-9]/X/g'
数字变 X。
十五、常用实战
1. 修改 IP
sed -i 's/192\.168\.1\.1/10.0.0.1/g' config.ini
2. 删除注释
sed '/^#/d' file.txt
3. 删除空行
sed '/^$/d' file.txt
4. 查看第10行
sed -n '10p' file.txt
5. 查看10~20行
sed -n '10,20p' file.txt
6. 替换 nginx 配置
sed -i 's/listen 80/listen 8080/g' nginx.conf
十六、自定义分隔符(非常常用)
默认:
s/旧/新/
使用 / 当分隔符。
路径会很难看:
sed 's/\/usr\/local/\/opt/g'
所以可以改成:
sed 's#/usr/local#/opt#g'
十七、Linux 命令缩写文化
Unix 很喜欢缩写。
常见命令
命令 全称 意思ls
list
列表
cp
copy
复制
mv
move
移动
rm
remove
删除
pwd
print working directory
当前目录
grep
global regular expression print
全局正则打印
sed
stream editor
流编辑器
awk
作者名字缩写
文本分析工具
十八、sed 最核心理解
你可以把它理解成:
for 每一行:
执行规则
输出结果
6 个帖子 - 3 位参与者