- A+
最近遇到几个shell问题,让以前觉得shell用的不错的我大吃一惊。
比如wc命令可以统计一个文件的行数,如果要知道本目录所有文件的行数和总行数,使用命令:
wc -l * 2> /dev/null
如果本目录有子目录,假如只有一级子目录:
wc -l */* 2> /dev/null
如果本目录有三级子目录,则比较麻烦,需要和find命令结合:
find -print0 | wc -l --files0-from=- 2> /dev/null
这个可能很简单,但我已经真的没有想过,可能没有真正去处理大量数据吧,也没有好好去实践。
再比如,在shell脚本中有for循环,需要从1到10分别打印:
for i in "1 2 3 4 5 6 7 8 9 10";do echo "$i"; done
那么如果是1到100呢?这个我以前遇到过,但没有细究,可以:
for i in $(seq 10);
do
echo "$i"
done
需要学习的东西很多,片刻不敢偷懒!!!
找到for循环的总结,转载下:
1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10)
3、for i in `ls`
4、for i in ${arr[@]}
5、for i in $* ; do
6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
7、for i in f1 f2 f3 ;do
8、for i in *.txt
9、for i in $(ls *.txt)
10、LIST="rootfs usr data data2"
for d in $LIST; do
用for in语句自动对字符串按空格遍历的特性,对多个目录遍历
11、for i in {1..10}
12、for i in stringchar {1..10}
13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'
注意:AWK中的for循环写法和C语言一样的
如果要处理好文本数据,需要精通以下几个命令:
find
wc
awk
sed
seq
tr
cat
head
tail
.......
来源:网易博客
http://leslie-chu.blog.163.com/blog/static/199863243201251603448505/