sed
简单替换
将每一个 Hello
替换为 hello
:
sed 's/Hello/hello/g' hello.txt > newHello.txt
通过加上 -i
即 in-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 类名: