sed

sed

简单替换

将每一个 Hello 替换为 hello

sed 's/Hello/hello/g' hello.txt > newHello.txt

通过加上 -iin-place 可以在原地替换原文件:

sed -i 's/Hello/hello/g' hello.txt

有一个通用的 UNIX 原则,在进行重要的永久性改变之前,尽可能地事先预览结果。

只对指定行操作

sed '5s/hello/Hello/g'
sed '5,10s/hello/Hello/g'
sed '$s/hello/Hello/g'
sed '5,$s/hello/Hello/g'
# 只处理包含 OK 的行
sed '/OK/s/hello/Hello/g'

特别长的 sed 命令

sed -i \
-e 's/mon/Monday/g' \
-e 's/tue/Tuesday/g' \
-e 's/wed/Wednesday/g' \
-e 's/thu/Thursday/g' \
-e 's/fri/Friday/g' \
-e 's/sat/Saturday/g' \
-e 's/sun/Sunday/g' \
calendar

面试题:打印文件的第 10-20 行

$ sed -n '10, 20p' input.txt
$ awk '10<=NR && NR <= 20' input.txt
$ head -20 input.txt | tail -11

jcmd 打印直方图

jcmd <PID> GC.class_stats | awk '{print $13}' | sed 's/\(.*\)\.\(.*\)/\1/g' | sort | uniq -c |sort -nrk1

上述的 sed 命令,应该是去掉 Java 类名: