一. shell的一些常用东东总结
1.计算时间差
1.计算时间差
- time1=$(date +%s -d '1990-01-01 01:01:01')
- echo "time1=$time1"
- time2=$(date +%s -d '1990-01-01 01:01:01')
- echo "time2=$time2"
- time3=$(($time1+$time2))
- echo $time3
- if [ "$1" = 'r' ]; then
- echo "$1" ; exit
- fi
3.通过进程名找到pid,然后kill
android系统中没有pkill,所以只能通过ps找到pid然后kill
- pid=`adb shell ps | grep adb | busybox awk '{ print $2 }'
- adb shell kill -9 $pid
- pid=` ps -ef | grep "adb" | awk '{print $2}' | head -n 1`
- kill -9 $pid
例如统计 hello.txt 中 字符a出现的次数:
5. 死循环
6. 内核中删除未编译的c与其名相同的头文件,对当前目录中的所有文件生效
注意: 上述脚本只有在内核编译时没有指定out目录,也就是说生成的中间文件与源文件在同一个目录下才有用.
若想只对当前目录生效,则find改为find . -maxdepth 1 -name "*.c"
7. 替换tab为空格
二.sed的使用
1. sed的贪婪性
有test.txt想把if的条件去掉
如果不管sed的贪婪性,那么匹配就会出现如下问题
正确的
2.删除
a.删除含有cong: video的行
sed -e '/cong: video/!d' log.txt > 2.txt
b. 删除不包含uart_recv与net_recv的行
sed -r -i '/uart_recv|net_recv/!d' ./1.txt
其中 -r, --regexp-extended : use extended regular expressions in the script.
- grep -o 'a' hello.txt | wc -l
- while true
- do
- done
- #!/bin/sh
- for c_file in `find . -name "*.c"`
- do
- obj_file=`echo "$c_file" | sed 's/\.c/\.o/'`
- if [ ! -f "$obj_file" ]; then
- rm $c_file
- echo "warning: delete c file $c_file"
- head_file=`echo "$c_file" | sed 's/\.c/\.h/'`
- if [ -f "$head_file" ]; then
- rm $head_file
- #echo "the source file is: $c_file"
- echo "warning: delete head file $head_file"
- fi
- fi
- done
若想只对当前目录生效,则find改为find . -maxdepth 1 -name "*.c"
7. 替换tab为空格
cong@msi:/tmp$ find . -name "*.[hc]" | xargs sed -i 's/\t/ /g' ;;中间四个空格
vim的配置文件.vimrc中加入:
set expandtab ;;以后在vi中按tab都成了空格了
二.sed的使用
1. sed的贪婪性
有test.txt想把if的条件去掉
- cong@msi:/tmp/test$ cat test.txt
- #define dbg(m) {if (trace_level >= LEVEL_ERROR) TRACE_0(LAYER_DUN, TYPE_ERROR, m);}
-
- cong@msi:/tmp/test$ sed 's/if\ .*)//' test.txt
- #define dbg(m) {;}
- cong@msi:/tmp/test$ sed 's/if\ [^)]*)//' test.txt
- #define dbg(m) { TRACE_0(LAYER_DUN, TYPE_ERROR, m);}
a.删除含有cong: video的行
sed -e '/cong: video/!d' log.txt > 2.txt
b. 删除不包含uart_recv与net_recv的行
sed -r -i '/uart_recv|net_recv/!d' ./1.txt
其中 -r, --regexp-extended : use extended regular expressions in the script.