Linux 命令行

2015/08/28

Categories: Linux Tags: bash linux

echo:

find: 查找文件,基本格式 find [目录] [选项] [操作],如 find . -name '*.go',在当前目录查找所有后缀为 .go 的文件

tee: 把输入复制到多个地方,并复制到标准输出,如 ls | tee /dve/tty out | wc -l

sort: 对输入按行排序

例: 把 .zsh_history 所有含有字符 md5 的行删除

grep "md5" -n .zsh_history | awk  -F : '{printf("%sd\n"), $1}'| \ 
  sort -r | xargs -I % sed -i ".bak" % .zsh_history

首先找到所有有 md5 的行

grep "md5" -n .zsh_history

结果是这样的:

10110:: 1440752051:0;grep "md5" -n .zsh_history

然后把行号提取出来,并在每个行号加上字符 d,字符 d 在 sed 命令中表示删除行:

awk  -F : '{printf("%sd\n"), $1}'

这样行号就可以按顺序的打印出来:

10110d
10111d
10112d

但是这时候不能直接一行一行删,因为删了第一个后面的行号会变!所以需要行号从大到小删!

sort -r

这个就能逆序了。 最后就是删除指定行了

xargs -I % sed -i ".bak" % .zsh_history

这里有必要解释下 xargs: -I 参数需要跟一个替换符,这个替换符可以把之后命令中的替换符用 stdin 替换。