以后讲陆续放出我学习过程中的点滴...shell进步,感悟的点滴...
1.删除文本后n行
sed版本:
sed '1{:a;N;'$n'!b a};$d;N;P;D' sed.data
awk版本:
n=7;awk 'BEGIN{n='$n'} { a[NR]=$0;while(NR<n){if (!getline) break;a[NR]=$0}; while(getline a[NR]){print NR,a[NR-n];delete a[NR-n];} }' sed.data
head版本:
head -n"$(($(cat sed.data| wc -l)-n))" sed.data
我贴点数据出来你就懂了,我自己也理解了好一会.
zj@zj:~/Script/cushell/08.11.06$ cat sed.data
0
1
2
zj@zj:~/Script/cushell/08.11.06$ n=2;sed '1{:a;N;'$n'!b a};$d;N;P;D' sed.data
0
先1{...}就是第一行的时候就:a;N;'$n'!b a,读取1到n行到模式空间
这个时候模式空间为0,1
$d由于还没有到$最后一行不d,就是不删除模式空间
这个时候N;读取了2;模式空间为0\n\1\n2了
P;D就是打印0,从模式空间删除0,这个时候模式空间为1\n2了.
这个时候进入下一次循环,由于最后一行$已经在模式空间了,删除模式空间.
ok,我是这么理解的,也不知道对不?仅属愚见
2.
find ./ -name "*.c" -print 2 > /dev/null | xargs grep cccc //将find的错误重定向
find ./ -name "*.c" -print | xargs grep cccc 2 > /dev/null //将xargs的错误重定向
3.vim-full才支持颜色显示.
4.
#!/bin/sh
if [ "$1" = "-h" ];then
cat << help
aaaaa
help
exit 0
fi
第二个help前不能有空格 or 其它字符
|