文本替换

# my 替换成 Hao chen's /g 指所有行
sed "s/my/Hao Chen's/g" pets.txt

# 使用 -i 参数直接修改文件内容
sed -i "s/my/Hao Chen's/g" pets.txt

# 只替换第3到第6行的文本
sed "3,6s/my/your/g" pets.txt

# 只替换每一行的第一个s
sed 's/s/S/1' my.txt

# 只替换第一行的第3个以后的s
sed 's/s/S/3g' my.txt

# 多个匹配
sed '1,3s/my/your/g; 3,$s/This/That/g' my.txt

# 使用&来当做被匹配的变量
sed 's/my/[&]/g' my.txt

# 圆括号括起来的正则表达式所匹配的字符串会可以当成变量来使用
sed 's/This is my \([^,&]*\),.*is \(.*\)/\1:\2/g' my.txt
cat:betty

# insert 第一行前插入一行
sed "1 i This is my monkey, my monkey's name is wukong" my.txt

# c替换匹配行
sed "/fish/c This is my monkey, my monkey's name is wukong" my.txt

# d删除匹配行
sed '/fish/d' my.txt

获取特定范围的行数 在这个命令中,-n选项告诉sed只打印那些被特别指定的行,'1000,2000p'指定了要打印的行的范围, filename.csvCSV文件的名字。

sed -n '1000,2000p' filename.csv

正则表达式

^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如:\<abc 表示以 abc 为首的詞。
\> 表示词尾。 如:abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc] 表示匹配a或b或c,还有 [a-zA-Z] 表示匹配所有的26个字符。如果其中有^表示反,如 [^a] 表示非a的字符