- 论坛徽章:
- 0
|
本帖最后由 lkk2003rty 于 2012-03-21 16:54 编辑
1
- awk -F ' ' 一个字符作为一个域
- 例如 super@freemind:~$ echo "12345" | awk -F '' '{print $1,NF}'
- 1 5
- awk -F '[ ]' 一个空格作为分隔符
- 例如 super@freemind:~$ echo "1 2 345" | awk -F '[ ]' '{print $3,NF}'
- 4
- 第三个域是空字符串即‘’
- awk -F '[ ]+' 一个或多个空格作为分隔符
- 例如 super@freemind:~$ echo "1 2 345" | awk -F '[ ]+' '{print $3,NF}'
- 345 3
-
复制代码 2
- 二者一样.
- 输出最先匹配到foo1的行到离这行最近的匹配到foo2的行的内容,如果这行之后的所有行都不匹配foo2则输出这行之后的所有行(以上输出都包含匹配的行)。如果没有任何一行匹配到foo1则没有任何输出。如果有类似如下形式的多组,则将多组输出
- 匹配foo1的行
- 。。。。 多行既不匹配foo1也不匹配foo2
- 匹配foo2的行
- 例如
-
- super@freemind:~$ echo -e "foo1\nfoo2\nfoo2foo131232\nfoo2\nfoo2" | sed -n '/foo1/,/foo2/p'
- foo1
- foo2
- foo2foo131232
- foo2
复制代码 3
- : | gawk 'END{split("abcef123",a,"");for(i=1;i<256;i++){t="";for(j=0;j<8;j++)if(and(1,rshift(i,j))==1)t=t""a[j+1];print t }}'
复制代码 4
- BEGIN{FS=""}
- {
- pat[1]=$1;
- for(i=2;i<=NF;i++)
- {
- if($i!=$1)
- {
- t=$i;
- k=$i;
- break;
- }
- pat[1]=pat[1]""$i;
- }
- s[pat[1]]=1;
- j=2;
- k="";
- for(;i<=NF;i++)
- {
- if($i!=t)
- {
- if(!(k in s))
- {
- pat[j++]=k;
- s[k]=1;
- }
- t=$i;
- k="";
- }
- k=k""$i;
- }
- }
- END{
- t="";
- for(i=1;i<=length(pat);i++)
- t=t""pat[i];
- print t;
- }
- 使用方法 echo 'aaabcccaaabbbccc' | awk -f 4.awk
复制代码 7
- super@freemind:~$ echo '1
- > 2
- > 3
- > a
- > b
- > c
- > d
- > c
- > e' | awk '/^a/{b=1}b{a=a"\n"$0;}END{sub(/[^c]*$/,"",a);print a}'
- a
- b
- c
- d
- c
复制代码 8- super@freemind:~$ seq 9 | sed -n -e '1{N;N;ba;};x;G;ba;:a s/\n/ /g;p;s/[0-9] //;x;${x;p;}'
- 1 2 3
- 2 3 4
- 3 4 5
- 4 5 6
- 5 6 7
- 6 7 8
- 7 8 9
- 8 9
复制代码 9
- #!/bin/bash
- pass=$(mkpasswd -l 8 -d 1 -c 1 -C 1)
- echo "${pass}"
- log_file=pwd_$(date +%Y-%m-%d).log
- while read ip
- do
- ssh root@${ip} passwd --stdin oracle<<< "${pass}"
- if [ $? -eq 0 ]
- then
- echo -e "$(date "+%Y-%m-%d %H:%M:%S")\t${ip}\t${pass}\tok" >> ${log_file}
- else
- echo -e "$(date "+%Y-%m-%d %H:%M:%S")\t${ip}\t${pass}\tfail" >> ${log_file}
- fi
- done<ip_file
复制代码 ip_file格式为每行为要改密码机子的ip |
|