工作中用到linux命令(mac系统)

来源:互联网 发布:国际经济数据 编辑:程序博客网 时间:2024/05/22 00:48

1.find 命令

find . -name "*.cpp"  --查找后缀名为cpp的文件

find . -name "*.cpp" > log.txt      -- 输出到log.txt中

find . -name "*.cpp" -o -name "*.c" -- 列出所有的cpp和c文件


2.sed命令

find . -name "*.cpp"|sed -e 's/.\//..\/..\//' -e 's/.cpp/.cpp \\/' > log.txt       -- 查找当前目录下后缀名为cpp的文件,然后输出格式为../../AndCommon.cpp \

附:正则表达式中的转义字符(转自msdn)

字符或序列

描述

以下字符之外的所有字符:

$ ^ { [ ( | ) * + ?\

这些字符在正则表达式中没有特殊含义;它们与自身匹配。

\a

与报警 (bell) 符 \u0007 匹配。

\b

[character_group]字符类中,与退格键\u0008 匹配。在字符类之外,\b 是一个与单词边界匹配的定位点。

\t

与制表符 \u0009 匹配。

\r

与回车符 \u000D 匹配。 请注意 \r 与换行符 \n 不是等效的。

\v

与垂直制表符 \u000B 匹配。

\f

与换页符 \u000C 匹配。

\n

与换行符 \u000A 匹配。

\e

与转义符 \u001B 匹配。

\ nnn

与 ASCII 字符匹配,其中nnn包含两个或三个数字表示八进制符号代码的。 例如,\040 表示空格字符。 如果此构造只有一个数字(例如,\2)被解释为反向引用,或如果它对应于捕获组的编号,则它被解释为反向引用。

\x nn

与 ASCII 字符匹配,其中nn是两位数字的十六进制码位。

\c X

与 ASCII 控制字符匹配,其中 X 是控制字符的字母。 例如,\cC 是 CTRL-C。

\u nnnn

匹配UTF-16编码,当nnnn是十六进制值

\

在后面带有不识别为转义符的字符时,与该字符匹配。 例如,\* 匹配星号 (*) 并与 \x2A 相同。

\G

在最后一个匹配结束的位置开始。

(.+)

一次或多次与任何字符匹配。 这是第一个捕获组。

[\t\u007c]

与选项卡 (\t) 或垂直条 (|) 匹配。

(.+)

一次或多次与任何字符匹配。 这是第二个捕获组。

\r?\n

与零个或一个后接一个新行的回车符匹配。




3.sed和grep结合替换文本中字符

sed -i '' "s/xiaowu/0124/g" `grep xiaowu -rl *.h *.cpp`       -- 将当前目录下所有.h和.cpp文件中的xiaowu替换为0124

注意点:(1) sed -i 后有两个单引号',因为mac下的sed命令和linux 的有些许不同,-i后必须加上任意字符,那些字符就作为备份文件的后缀名,比如sed -i.bak 's/xiaowu/0124/g'  (-i后没空格)。 这里用两个单引号替代了(-i后有空格)

(2)grep命令前后不是单引号,而是键盘上esc下面的那个键。

补充:最近发现这个命令貌似不好使了,换了一个命令代替,如下:

sed -i '' "s/xiaowu/0124/g" `find * -name "*.h" -o -name "*.cpp" -exec grep 'xiaowu' -rl {} \;`

先用find和grep命令结合查找出文本所在的文件,然后用sed替换。




0 0
原创粉丝点击