一. shell的一些常用东东总结
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
2. if then 的写法
-
if [ "$1" = 'r' ]; then
-
echo "$1" ; exit
-
fi
if空格[空格arg1空格=空格arg2空格]无空格;空格then
3.通过进程名找到pid,然后kill
android系统中没有pkill,所以只能通过ps找到pid然后kill
-
pid=`adb shell ps | grep adb | busybox awk '{ print $2 }'
-
adb shell kill -9 $pid
PC上面:
-
pid=` ps -ef | grep "adb" | awk '{print $2}' | head -n 1`
-
kill -9 $pid
4.统计文本文件中单个字符出现的次数
例如统计 hello.txt 中 字符a出现的次数:
-
grep -o 'a' hello.txt | wc -l
5. 死循环
6. 内核中删除未编译的c与其名相同的头文件,对当前目录中的所有文件生效
-
#!/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
注意: 上述脚本只有在内核编译时没有指定out目录,也就是说生成的中间文件与源文件在同一个目录下才有用.
若想只对当前目录生效,则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);}
-
如果不管sed的贪婪性,那么匹配就会出现如下问题
-
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);}
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.
c. 删除不包含uart_recv与net_recv的行
sed -i '/\(uart_recv\|net_recv\)/!d' ./1.txt
3.3 sed的使用
a. 将 GLOBAL(void) --> void
sed -i 's/GLOBAL(\(.*\))/\1/' ./file
b. 将 LOCAL(void) --> static
sed -i 's/LOCAL(\(.*\))/static \1/' ./file
阅读(1590) | 评论(0) | 转发(1) |