sed awk and vim
工作和使用shell过程中一些常用的操作备忘
1.ed and sed
1.1 ed
ed [g]/regular/d filename #[全局]删除/匹配行/
ed [g]/s/pattern/replacement/[g] #[全局]替换/匹配块/替换块[同行多次匹配]
1.2 sed
sed "/^\s*$/d" filename #删除文件中的空行(包括空白字符的行)
sed -i /xxxx/d ./*.txt #要删除符合条件的行
sed -i /7777/a77777 ./test.txt #/a在下一行添加
sed -i /8888/i88888 ./test.txt #/i在上一行添加
sed 's/,/\n/g' ./test.txt #, -> next line
2.awk
元字符在方括号中会失去元字符含义:.[!?;:,”.] .
(]第一个出现解释为一个字面成员) 例外:\在awk中依然转意 -不在首尾表示范围 ^仅在首位表示反转匹配
3.应用
3.1用cpp文件生成makefile时
shell command:
$ ls -n *.cpp | awk {'print $9'} | sed 's/cpp/o \\/'
output:
CoordinateArrayXYImp.o \
CoordinateArrayXYZImp.o \
CoordinateEncryptImp.o \
CoordinateImp.o \
4.vim
4.1替换
:s/viv/sky/g 替换当前行所有 viv 为 sky
:%s/viv/sky/g(等同于 :g/viv/s//sky/g) 替换每一行中所有 viv 为 sky
4.2大小写转换
~ 转换1个字符 5~ 5个字符
g[Uu]w 转换单词为大小写
g~w 相互转换单词大小写
ggguG 表示把整篇文章转换为小写
gg表示光标移动到文章开头,G表示选定范围为到文章结尾
guu 将整行转换为小写
gUU 将整行转换为大写
g~~ 将一行中的大小写互转
g[u|U]5w 表示转换为小|大写5个单词
4.3行编辑
j 光标移到下一行 J 下一行移到上一行
More shell: github
Leave a Comment