??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色婷婷一区二区三区,亚洲熟妇丰满xxxxx,亚洲色欲久久久综合网http://www.tkk7.com/Man/category/49803.htmlzh-cnFri, 30 Nov 2012 06:33:58 GMTFri, 30 Nov 2012 06:33:58 GMT60BASH中的ҎW号 http://www.tkk7.com/Man/archive/2012/11/29/392231.html此号已被?/dc:creator>此号已被?/author>Thu, 29 Nov 2012 13:36:00 GMThttp://www.tkk7.com/Man/archive/2012/11/29/392231.htmlhttp://www.tkk7.com/Man/comments/392231.htmlhttp://www.tkk7.com/Man/archive/2012/11/29/392231.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/392231.htmlhttp://www.tkk7.com/Man/services/trackbacks/392231.html
1. $变量
变量不需先声明,使用$引用变量的?/div>
  x=12         ##{号左右不能有空?       
  echo $x
一些重要变?/div>
$HOME 当前用户ȝ?
$PATH 搜烦目录
$PS1 命o提示W?/div>
$PS2 二提示W?/div>
$IFS shell输入分隔W,通常为空根{制表符和换行符
$# 参数个数
$0 shell脚本名字
$1,$2... W?,2个参?/div>
$* 所有参敎ͼ用IFS中的W一个字W分?/div>
$@ cM$*Q但不用IFS字符分隔
$?  前条命o的退出状?(true) 1(false)
2. 单引?( '' )
当shell到W一个单引号Ӟ它忽略掉其后直到叛_L所有特D字W?/div>
3. 双引?( " " )
双引号作用与单引L|区别在于它没有那么严根{单引号告诉shell忽略所有特D字W,
而双引号中的三种Ҏ字符不被忽略Q?,\,` ,卛_引号会解释字W串的特别意?而单引号直接使用字符丌Ӏ?/div>
4. 反引?``)?()
命o替换Q?()格式受到POSIX标准支持,$(command),执行命oq捕获其输出,可以攑ֈ变量中如下面的expr例子
5. (( )) 或let
术赋?/strong>Q用来给表达式赋值ƈq回一个状态码。利用算术赋值可以进行赋D及逻辑比较
((x=x+1))           ## x=$((x+1))
if ((30 < age && age < 60)); then
6. $(( ))
术扩展Q用于显C辑ּ的值或者把Dl一个变量,可替代expr命o,比expr更高?
 x=$(($x+1))          ##$(( ))中单个变量引?W可选,卛_写成 x=$((x+1))
 x=$(expr $x + 1)  ##加号左右要有I格 expr $x + 1 执行l果捕获其输出放到变?/div>
7. [ ] 或test
  if [ -f fred.c ]  ##要有I格
  if [ 30 -lt $age -a $age -lt 60 ]; then
8. [[ ]]
作用与[ ]cMQ操作符不同Q与C语言操作一?/div>
if [[ 30 < $age && $age < 60 ]]; then   ##要有I格,变量前要?
9. && || ?
  statement1 && statement2 && statement3Q上一条命令返回true才执行下一条;||cM
  if [ -f fred.c ] && echo 'exists' && [ -f fred.h ]   ## echo q回的是true
 
10. ( ) 子shell
11. : I命令,q回true
12.  << Here文档
bash中命令行扩展序
Q?Q花括号扩展  rm {main,temp,test}.c
Q?Q代字符扩展 echo ~
Q?Q参数扩展和变量扩展 $a
Q?Q算术扩?nbsp; x=$(($x+1))
Q?Q命令替?$(command)
Q?Q分?IFS
Q?Q\径名
Q?Q处理替?/div>


]]>shell 注释多行Ҏhttp://www.tkk7.com/Man/archive/2012/03/09/371596.html此号已被?/dc:creator>此号已被?/author>Fri, 09 Mar 2012 09:36:00 GMThttp://www.tkk7.com/Man/archive/2012/03/09/371596.htmlhttp://www.tkk7.com/Man/comments/371596.htmlhttp://www.tkk7.com/Man/archive/2012/03/09/371596.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/371596.htmlhttp://www.tkk7.com/Man/services/trackbacks/371596.html׃Shell不支持直接多行注释,ȝ了以下Shell注释多行的变通方?br />

一、通过Here Documents?实现
1、最单方?br />
:<<BLOCK
注释内容
BLOCK
      把输入重定义到前面的命oQ但?是空命oQ所以就相当于注释了?/div>
      如果注释中有反引L命o׃报错?span style="color: red; ">反引号部分没被注释掉Q例如ab=`ls -l abc`׃会被注释掉?/div>
2、解x释中有反引号的问?br />      在windows?span style="color: red; ">cygwin环境中测试时报错
A、方法一
:<<BLOCK'
注释内容
'BLOCK
B、方法二
:<<BLOCK'
注释内容
'BLOCK
C、方法三
:<<'
注释内容
'
      以上三种Ҏ都是通过?<
      BLOCK为Here Documents中的定义W号可以随意起名Q只要前后匹配就行了
3、简单说?指o和Here Documents
      :是什么也不作(do nothing)即空命o。它的最基本作用是在if,then条g中。在if语句中各部分必须接执行命令,但有时你不在乎条件是为真(或假)只在乎相反情c?/div>
command<<word
any input
file content
word
      是Here Documents的用法,意思是以上的定义W?wordQ也可以理解成本地文档名)传给某脚本或命oQword的内容ؓ两个word间输入Q意内?word为Here Documents中的定义W号可以随意起名Q只要前后匹配就行了Q,q样可以在脚本中用command来执行输入而不必再重徏一文g?/div>
  常用在菜单屏q中Q例如:
cat <<Menu
  1. List files
  2.HELP
  3.exit
Menu
 
:<<word
....注释内容
word
      qgZ本地文g,然后对它执行I命令,也就是什么也不做Q就相当于注释了?/div>
  更详l的Here Document说明可参考http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/here-docs.html


二、通过循环实现
1、while?实现
while : 
do 
break
注释内容
done
 
2、until?实现
until :
注释内容
done
?span style="color: #ff0000; ">cygwin中测试时报错Q要按照如下格式
until :
do
注释内容
done

3、if?实现
if [ 1 -eq 2 ]
then
注释内容
fi
 
      注意注释内容中是否含”done/fi”Q包含会造成意外l束

三、其它方?/strong>
1、方法一
: :||:<<\COMMENTS
....注释内容
COMMENTS
  高手说上面这U方法最好,因ؓHere Documents部分不会执行刎ͼ只会分析刎ͼ应该不会对第二个:作实际的IO重定向?/div>
2、方法二
: << 'BLOCK'
....注释内容
BLOCK
  可以里面的变量扩展关闭掉?/div>
3、方法三
:||{
....注释内容
}
  q种Ҏ不用到Here DocumentsQ不q这U方法要注意注释内容中的}
4、方法四
:<<\EOF
....注释内容
EOF
  上面Ҏ可关掉Here Documents中的扩展功能Q在Here-Document中忽略ending marker前的M字符
  实际上?lt;<\EOF <<'EOF'Q甚?lt;<<\eof在语法上面更加的z。不q这U方法同栯注意注释内容中的eof< p=""> <<\eof在语法上面更加的z。不q这U方法同栯注意注释内容中的eof<>

四、参考资?/strong>
  http://bbs.chinaunix.net/viewthread.php?tid=1152658&extra=&page=1
  http://blog.csdn.net/magicpang/archive/2009/04/14/4072878.aspx
  http://bbs.chinaunix.net/viewthread.php?tid=1196678&extra=&page=1







]]>[demo]sed字符串替?/title><link>http://www.tkk7.com/Man/archive/2012/02/21/370422.html</link><dc:creator>此号已被?/dc:creator><author>此号已被?/author><pubDate>Tue, 21 Feb 2012 07:51:00 GMT</pubDate><guid>http://www.tkk7.com/Man/archive/2012/02/21/370422.html</guid><wfw:comment>http://www.tkk7.com/Man/comments/370422.html</wfw:comment><comments>http://www.tkk7.com/Man/archive/2012/02/21/370422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Man/comments/commentRss/370422.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Man/services/trackbacks/370422.html</trackback:ping><description><![CDATA[<div>扑ևZ:\A、Z:\B目录下所有内容带“APPLE“的文Ӟ?APPLE"替换?ORANGE"Qƈ输出到Z:\C相应的目录下</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">  1</span> <span style="color: #008000; ">#</span><span style="color: #008000; ">!/bin/sh</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">  2</span> <span style="color: #008000; ">#</span><span style="color: #008000; "> Auto replace the files' content and copy them to the specified directory.</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">  3</span> <span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">  4</span> <span style="color: #000000; ">SEARCH_WORD</span><span style="color: #000000; ">=</span><span style="color: #800000; ">'</span><span style="color: #800000; ">APPLE</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">  5</span> <span style="color: #000000; ">REPLACE_WORD</span><span style="color: #000000; ">=</span><span style="color: #800000; ">'</span><span style="color: #800000; ">ORANGE</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">  6</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">  7</span> <span style="color: #000000; ">SRC_DIR_ARRAY</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(<br /></span><span style="color: #008080; ">  8</span> <span style="color: #000000; "></span><span style="color: #800000; ">'</span><span style="color: #800000; ">Z:/A</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">  9</span> <span style="color: #000000; "></span><span style="color: #800000; ">'</span><span style="color: #800000; ">Z:/B</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 10</span> <span style="color: #000000; ">)<br /></span><span style="color: #008080; "> 11</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 12</span> <span style="color: #000000; ">OUTPUT</span><span style="color: #000000; ">=</span><span style="color: #800000; ">'</span><span style="color: #800000; ">Z:/C</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 13</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 14</span> <span style="color: #000000; ">global_lastDir_pre</span><span style="color: #000000; ">=</span><span style="color: #800000; ">''</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 15</span> <span style="color: #000000; ">declare </span><span style="color: #000000; ">-</span><span style="color: #000000; ">i count</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0<br /></span><span style="color: #008080; "> 16</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 17</span> <span style="color: #000000; ">function checkFileDir<br /></span><span style="color: #008080; "> 18</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 19</span> <span style="color: #000000; ">    local fileNameWithPath</span><span style="color: #000000; ">=</span><span style="color: #000000; ">$</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 20</span> <span style="color: #000000; ">    local dirPre</span><span style="color: #000000; ">=</span><span style="color: #000000; ">${fileNameWithPath</span><span style="color: #000000; ">%/*</span><span style="color: #000000; ">}<br /></span><span style="color: #008080; "> 21</span> <span style="color: #000000; ">    local tempPath</span><span style="color: #000000; ">=</span><span style="color: #000000; ">${OUTPUT}</span><span style="color: #000000; ">/</span><span style="color: #000000; ">${dirPre}<br /></span><span style="color: #008080; "> 22</span> <span style="color: #000000; ">    global_lastOutput</span><span style="color: #000000; ">=</span><span style="color: #000000; ">$OUTPUT</span><span style="color: #000000; ">/</span><span style="color: #000000; ">$fileNameWithPath<br /></span><span style="color: #008080; "> 23</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; "> 24</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ ! </span><span style="color: #000000; ">-</span><span style="color: #000000; ">d </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$tempPath</span><span style="color: #800000; ">"</span><span style="color: #000000; "> ]<br /></span><span style="color: #008080; "> 25</span> <span style="color: #000000; ">    then<br /></span><span style="color: #008080; "> 26</span> <span style="color: #000000; ">        tar </span><span style="color: #000000; ">-</span><span style="color: #000000; ">cf </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$fileNameWithPath</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">|</span><span style="color: #000000; "> tar </span><span style="color: #000000; ">-</span><span style="color: #000000; ">C </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$OUTPUT</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">xf </span><span style="color: #000000; ">-</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 27</span> <span style="color: #000000; ">        rm </span><span style="color: #000000; ">-</span><span style="color: #000000; ">f </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$global_lastOutput</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 28</span> <span style="color: #000000; ">    fi<br /></span><span style="color: #008080; "> 29</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 30</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; "> 31</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 32</span> <span style="color: #000000; ">function replaceFile<br /></span><span style="color: #008080; "> 33</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 34</span> <span style="color: #000000; ">    local fileNameWithPath</span><span style="color: #000000; ">=</span><span style="color: #000000; ">${</span><span style="color: #000000; ">1</span><span style="color: #008000; ">#</span><span style="color: #008000; ">*/}</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 35</span> <span style="color: #008000; "></span><span style="color: #000000; ">    local regix</span><span style="color: #000000; ">=</span><span style="color: #000000; ">$</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 36</span> <span style="color: #000000; ">    local thisDir_pre</span><span style="color: #000000; ">=</span><span style="color: #000000; ">${fileNameWithPath</span><span style="color: #000000; ">%/*</span><span style="color: #000000; ">} <br /></span><span style="color: #008080; "> 37</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; "> 38</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$thisDir_pre</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$global_lastDir_pre</span><span style="color: #800000; ">"</span><span style="color: #000000; "> ]<br /></span><span style="color: #008080; "> 39</span> <span style="color: #000000; ">    then<br /></span><span style="color: #008080; "> 40</span> <span style="color: #000000; ">        sed </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$regix</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$fileNameWithPath</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$global_lastOutput</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 41</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">continue</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 42</span> <span style="color: #000000; ">    fi<br /></span><span style="color: #008080; "> 43</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 44</span> <span style="color: #000000; ">    checkFileDir </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$fileNameWithPath</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 45</span> <span style="color: #000000; ">    global_lastDir_pre</span><span style="color: #000000; ">=</span><span style="color: #000000; ">$thisDir_pre<br /></span><span style="color: #008080; "> 46</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 47</span> <span style="color: #000000; ">    sed </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$regix</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$fileNameWithPath</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$global_lastOutput</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 48</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; "> 49</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 50</span> <span style="color: #000000; ">function echoNote<br /></span><span style="color: #008080; "> 51</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 52</span> <span style="color: #000000; ">    echo </span><span style="color: #800000; ">"</span><span style="color: #800000; ">Wrong directory detected. Please check it !</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 53</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; "> 54</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 55</span> <span style="color: #000000; ">function init<br /></span><span style="color: #008080; "> 56</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 57</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> src_dir </span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> ${SRC_DIR_ARRAY[</span><span style="color: #000000; ">*</span><span style="color: #000000; ">]}<br /></span><span style="color: #008080; "> 58</span> <span style="color: #000000; ">    do<br /></span><span style="color: #008080; "> 59</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ ! </span><span style="color: #000000; ">-</span><span style="color: #000000; ">d </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$src_dir</span><span style="color: #800000; ">"</span><span style="color: #000000; "> ]<br /></span><span style="color: #008080; "> 60</span> <span style="color: #000000; ">        then<br /></span><span style="color: #008080; "> 61</span> <span style="color: #000000; ">            echoNote<br /></span><span style="color: #008080; "> 62</span> <span style="color: #000000; ">            echo </span><span style="color: #800000; ">"</span><span style="color: #800000; ">SRC_DIR_ARRAY: '$src_dir'</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 63</span> <span style="color: #000000; ">            exit<br /></span><span style="color: #008080; "> 64</span> <span style="color: #000000; ">        fi<br /></span><span style="color: #008080; "> 65</span> <span style="color: #000000; ">    done<br /></span><span style="color: #008080; "> 66</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; "> 67</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ ! </span><span style="color: #000000; ">-</span><span style="color: #000000; ">d </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$OUTPUT</span><span style="color: #800000; ">"</span><span style="color: #000000; "> ]<br /></span><span style="color: #008080; "> 68</span> <span style="color: #000000; ">    then<br /></span><span style="color: #008080; "> 69</span> <span style="color: #000000; ">        echoNote<br /></span><span style="color: #008080; "> 70</span> <span style="color: #000000; ">        echo </span><span style="color: #800000; ">"</span><span style="color: #800000; ">OUTPUT: '$OUTPUT'</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 71</span> <span style="color: #000000; ">        exit<br /></span><span style="color: #008080; "> 72</span> <span style="color: #000000; ">    fi<br /></span><span style="color: #008080; "> 73</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; "> 74</span> <span style="color: #000000; ">    rm </span><span style="color: #000000; ">-</span><span style="color: #000000; ">rf </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$OUTPUT</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 75</span> <span style="color: #000000; ">    mkdir </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$OUTPUT</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 76</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 77</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; "> 78</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 79</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 80</span> <span style="color: #000000; ">echo </span><span style="color: #000000; ">-</span><span style="color: #000000; ">e </span><span style="color: #800000; ">"</span><span style="color: #800000; ">----------------------------BEGIN--------------------------------\n</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 81</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 82</span> <span style="color: #000000; ">init<br /></span><span style="color: #008080; "> 83</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> src_dir </span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> ${SRC_DIR_ARRAY[</span><span style="color: #000000; ">*</span><span style="color: #000000; ">]}<br /></span><span style="color: #008080; "> 84</span> <span style="color: #000000; ">do<br /></span><span style="color: #008080; "> 85</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 86</span> <span style="color: #000000; ">    cd </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$src_dir</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 87</span> <span style="color: #000000; ">    list</span><span style="color: #000000; ">=</span><span style="color: #000000; ">`find . </span><span style="color: #000000; ">-</span><span style="color: #000000; ">type f </span><span style="color: #000000; ">|</span><span style="color: #000000; "> xargs grep </span><span style="color: #000000; ">-</span><span style="color: #000000; ">l </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$SEARCH_WORD</span><span style="color: #800000; ">"</span><span style="color: #000000; ">`<br /></span><span style="color: #008080; "> 88</span> <span style="color: #000000; ">    </span><span style="color: #008000; ">#</span><span style="color: #008000; ">list=`find . -type f | xargs grep -il "$SEARCH_WORD"`    # ignore case</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 89</span> <span style="color: #008000; "></span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> line </span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> $list<br /></span><span style="color: #008080; "> 90</span> <span style="color: #000000; ">    do<br /></span><span style="color: #008080; "> 91</span> <span style="color: #000000; ">        grep </span><span style="color: #000000; ">-</span><span style="color: #000000; ">Hn </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$SEARCH_WORD</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$line</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">>></span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$OUTPUT/log.txt</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 92</span> <span style="color: #000000; ">        </span><span style="color: #008000; ">#</span><span style="color: #008000; ">grep -iHn "$SEARCH_WORD" "$line" >> "$OUTPUT/log.txt"    # ignore case</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 93</span> <span style="color: #008000; "></span><span style="color: #000000; ">        count</span><span style="color: #000000; ">=</span><span style="color: #000000; ">count</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 94</span> <span style="color: #000000; ">        echo $line<br /></span><span style="color: #008080; "> 95</span> <span style="color: #000000; ">        replaceFile </span><span style="color: #800000; ">"</span><span style="color: #800000; ">$line</span><span style="color: #800000; ">"</span><span style="color: #000000; "> </span><span style="color: #800000; ">"</span><span style="color: #800000; ">s/$SEARCH_WORD/$REPLACE_WORD/g</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 96</span> <span style="color: #000000; ">        </span><span style="color: #008000; ">#</span><span style="color: #008000; ">replaceFile "$line" "s/$SEARCH_WORD/$REPLACE_WORD/Ig"    # ignore case</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 97</span> <span style="color: #008000; "></span><span style="color: #000000; ">    done<br /></span><span style="color: #008080; "> 98</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 99</span> <span style="color: #000000; ">done<br /></span><span style="color: #008080; ">100</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">101</span> <span style="color: #000000; ">echo </span><span style="color: #000000; ">-</span><span style="color: #000000; ">e </span><span style="color: #800000; ">"</span><span style="color: #800000; ">\n----------summary----------</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">102</span> <span style="color: #000000; ">echo </span><span style="color: #800000; ">"</span><span style="color: #800000; ">total files size: $count</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">103</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">104</span> <span style="color: #000000; ">echo </span><span style="color: #800000; ">"</span><span style="color: #800000; ">----------------------------END--------------------------------</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">105</span> <span style="color: #000000; "></span></div><img src ="http://www.tkk7.com/Man/aggbug/370422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Man/" target="_blank">此号已被?/a> 2012-02-21 15:51 <a href="http://www.tkk7.com/Man/archive/2012/02/21/370422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[demo]Ҏ每行内容排序http://www.tkk7.com/Man/archive/2012/02/19/370304.html此号已被?/dc:creator>此号已被?/author>Sun, 19 Feb 2012 14:02:00 GMThttp://www.tkk7.com/Man/archive/2012/02/19/370304.htmlhttp://www.tkk7.com/Man/comments/370304.htmlhttp://www.tkk7.com/Man/archive/2012/02/19/370304.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/370304.htmlhttp://www.tkk7.com/Man/services/trackbacks/370304.htmlҎ需求先求出每行排序条g的数量,排序Q再把数字去?br />
1、根据每行字W串长度排序
例:
查询var下的所有内容,q根据每行的长度从小到大排序
 find var | while read i; do echo ${#i} $i;done | sort -g | cut -d ' ' -f2
实现的方式不一而Q例如也可用awkl计长度Q代码显得更紧凑?br />
 find var | awk '{print length,$0}' | sort -g | cut -d ' ' -f2


2、根据每行的关键字数量排?br />例:
查询var下的所有内容,q根据目录的深度逆序排序
 find var | while read i; do echo `echo $i|grep -o '/'|wc -l` $i;done | sort -gr | cut -d ' ' -f2



]]>
SED单行脚本快速参?/title><link>http://www.tkk7.com/Man/archive/2012/02/14/369930.html</link><dc:creator>此号已被?/dc:creator><author>此号已被?/author><pubDate>Tue, 14 Feb 2012 04:40:00 GMT</pubDate><guid>http://www.tkk7.com/Man/archive/2012/02/14/369930.html</guid><wfw:comment>http://www.tkk7.com/Man/comments/369930.html</wfw:comment><comments>http://www.tkk7.com/Man/archive/2012/02/14/369930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Man/comments/commentRss/369930.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Man/services/trackbacks/369930.html</trackback:ping><description><![CDATA[<div>==sed实例介绍==<br /> -------------------------------------------------------------------------<br /> SED单行脚本快速参考(Unix 编辑器Q?nbsp;                      2005q?2?9?br /> <br /> 英文标题QUSEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor)<br /> 原标题:HANDY ONE-LINERS FOR SED (Unix stream editor)<br /> <br /> 整理QEric Pement  - 电邮Qpemente[at]northpark[dot]edu         版本5.5<br /> 译者:Joe Hong     - 电邮Qhq00e[at]126[dot]com<br /> <br /> 在以下地址可找到本文档的最斎ͼ英文Q版本:<br />    http://sed.sourceforge.net/sed1line.txt<br />    http://www.pement.org/sed/sed1line.txt<br /> <br /> 其他语言版本Q?br />   中文          - http://sed.sourceforge.net/sed1line_zh-CN.html<br />   捷克?nbsp;       - http://sed.sourceforge.net/sed1line_cz.html<br />   药          - http://sed.sourceforge.net/sed1line_nl.html<br />   法语          - http://sed.sourceforge.net/sed1line_fr.html<br />   徯          - http://sed.sourceforge.net/sed1line_de.html<br /> <br />   葡语          - http://sed.sourceforge.net/sed1line_pt-BR.html<br /> <br /> <br /> 文本间隔Q?br /> --------<br /> <br />  # 在每一行后面增加一I<br />  sed G<br /> <br />  # 原来的所有空行删除ƈ在每一行后面增加一I?br />  # q样在输出的文本中每一行后面将有且只有一I?br />  sed '/^$/d;G'<br /> <br />  # 在每一行后面增加两行空?br />  sed 'G;G'<br /> <br />  # 第一个脚本所产生的所有空行删除(卛_除所有偶数行Q?br />  sed 'n;d'<br /> <br />  # 在匹配式?#8220;regex”的行之前插入一I<br />  sed '/regex/{x;p;x;}'<br /> <br />  # 在匹配式?#8220;regex”的行之后插入一I<br />  sed '/regex/G'<br /> <br />  # 在匹配式?#8220;regex”的行之前和之后各插入一I<br />  sed '/regex/{x;p;x;G;}'<br /> <br /> ~号Q?br /> --------<br /> <br />  # 为文件中的每一行进行编P单的左对齐方式)。这里用了“制表W?#8221;<br />  # QtabQ见本文末尾关于'\t'的用法的描述Q而不是空格来寚w边缘?br />  sed = filename | sed 'N;s/\n/\t/'<br /> <br />  # Ҏ件中的所有行~号Q行号在左,文字右端寚wQ?br />  sed = filename | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'<br /> <br />  # Ҏ件中的所有行~号Q但只显C非I白行的行号?br />  sed '/./=' filename | sed '/./N; s/\n/ /'<br /> <br />  # 计算行数 Q模?"wc -l"Q?br />  sed -n '$='<br /> <br /> 文本转换和替代:<br /> --------<br /> <br />  # Unix环境Q{换DOS的新行符QCR/LFQؓUnix格式?br />  sed 's/.$//'                     # 假设所有行以CR/LFl束<br />  sed 's/^M$//'                    # 在bash/tcsh中,按Ctrl-M改ؓ按Ctrl-V<br />  sed 's/\x0D$//'                  # ssed、gsed 3.02.80Q及更高版本<br /> <br />  # Unix环境Q{换Unix的新行符QLFQؓDOS格式?br />  sed "s/$/`echo -e \\\r`/"        # 在ksh下所使用的命?br />  sed 's/$'"/`echo \\\r`/"         # 在bash下所使用的命?br />  sed "s/$/`echo \\\r`/"           # 在zsh下所使用的命?br />  sed 's/$/\r/'                    # gsed 3.02.80 及更高版?br /> <br />  # DOS环境Q{换Unix新行W(LFQؓDOS格式?br />  sed "s/$//"                      # Ҏ 1<br />  sed -n p                         # Ҏ 2<br /> <br />  # DOS环境Q{换DOS新行W(CR/LFQؓUnix格式?br />  # 下面的脚本只对UnxUtils sed 4.0.7 及更高版本有效。要识别UnxUtils版本?br />  #  sed可以通过其特有的“--text”选项。你可以使用帮助选项Q?#8220;--help”Q看<br />  # 其中有无一?#8220;--text”以此来判断所使用的是否是UnxUtils版本。其它DOS<br />  # 版本的的sed则无法进行这一转换。但可以?#8220;tr”来实现这一转换?br />  sed "s/\r//" infile >outfile     # UnxUtils sed v4.0.7 或更高版?br />  tr -d \r <infile >outfile        # GNU tr 1.22 或更高版?br /> <br />  # 每一行前导的“I白字符”Q空|制表W)删除<br />  # 使之左对?br />  sed 's/^[ \t]*//'                # 见本文末օ?\t'用法的描q?br /> <br />  # 每一行拖“I白字符”Q空|制表W)删除<br />  sed 's/[ \t]*$//'                # 见本文末օ?\t'用法的描q?br /> <br />  # 每一行中的前导和拖尾的空白字W删?br />  sed 's/^[ \t]*//;s/[ \t]*$//'<br /> <br />  # 在每一行开头处插入5个空|使全文向右移?个字W的位置Q?br />  sed 's/^/     /'<br /> <br />  # ?9个字Wؓ宽度Q将所有文本右寚w<br />  sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # 78个字W外加最后的一个空?br /> <br />  # ?9个字Wؓ宽度Q所有文本居中。在Ҏ1中,Z让文本居中每一行的?br />  # 头和后头都填充了I格?在方?中,在居中文本的q程中只在文本的前面填充<br />  # I格Qƈ且最l这些空格将有一半会被删除。此外每一行的后头q未填充I格?br />  sed  -e :a -e 's/^.\{1,77\}$/ & /;ta'                     # Ҏ1<br />  sed  -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/'  # Ҏ2<br /> <br />  # 在每一行中查找字串“foo”Qƈ找到的“foo”替换?#8220;bar”<br />  sed 's/foo/bar/'                 # 只替换每一行中的第一?#8220;foo”字串<br />  sed 's/foo/bar/4'                # 只替换每一行中的第四个“foo”字串<br />  sed 's/foo/bar/g'                # 每一行中的所?#8220;foo”都换?#8220;bar”<br />  sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # 替换倒数W二?#8220;foo”<br />  sed 's/\(.*\)foo/\1bar/'            # 替换最后一?#8220;foo”<br /> <br />  # 只在行中出现字串“baz”的情况下?#8220;foo”替换?#8220;bar”<br />  sed '/baz/s/foo/bar/g'<br /> <br />  # ?#8220;foo”替换?#8220;bar”Qƈ且只在行中未出现字串“baz”的情况下替换<br />  sed '/baz/!s/foo/bar/g'<br /> <br />  # 不管?#8220;scarlet”“ruby”q是“puce”Q一律换?#8220;red”<br />  sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'  #对多数的sed都有?br />  gsed 's/scarlet\|ruby\|puce/red/g'               # 只对GNU sed有效<br /> <br />  # 倒置所有行Q第一行成为最后一行,依次cLQ模?#8220;tac”Q?br />  # ׃某些原因Q用下面命令时HHsed v1.5会将文g中的I删除<br />  sed '1!G;h;$!d'               # Ҏ1<br />  sed -n '1!G;h;$p'             # Ҏ2<br /> <br />  # 行中的字符逆序排列Q第一个字成ؓ最后一字,……Q模?#8220;rev”Q?br />  sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'<br /> <br />  # 每两行q接成一行(cM“paste”Q?br />  sed '$!N;s/\n/ /'<br /> <br />  # 如果当前行以反斜?#8220;\”l束Q则下一行ƈ到当前行末尾<br />  # q去掉原来行反斜?br />  sed -e :a -e '/\\$/N; s/\\\n//; ta'<br /> <br />  # 如果当前行以{号开_当前行q到上一行末?br />  # q以单个I格代替原来行头?#8220;=”<br />  sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'<br /> <br />  # 为数字字串增加逗号分隔W号Q将“1234567”改ؓ“1,234,567”<br />  gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'                     # GNU sed<br />  sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # 其他sed<br /> <br />  # 为带有小数点和负L数值增加逗号分隔W(GNU sedQ?br />  gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'<br /> <br />  # 在每5行后增加一I白?Q在W?Q?0Q?5Q?0Q等行后增加一I白行)<br />  gsed '0~5G'                      # 只对GNU sed有效<br />  sed 'n;n;n;n;G;'                 # 其他sed<br /> <br /> 选择性地昄特定行:<br /> --------<br /> <br />  # 昄文g中的?0?Q模?#8220;head”的行为)<br />  sed 10q<br /> <br />  # 昄文g中的W一?Q模?#8220;head -1”命oQ?br />  sed q<br /> <br />  # 昄文g中的最?0?Q模?#8220;tail”Q?br />  sed -e :a -e '$q;N;11,$D;ba'<br /> <br />  # 昄文g中的最?行(模拟“tail -2”命oQ?br />  sed '$!N;$!D'<br /> <br />  # 昄文g中的最后一行(模拟“tail -1”Q?br />  sed '$!d'                        # Ҏ1<br />  sed -n '$p'                      # Ҏ2<br /> <br />  # 昄文g中的倒数W二?br />  sed -e '$!{h;d;}' -e x              # 当文件中只有一行时Q输入空?br />  sed -e '1{$q;}' -e '$!{h;d;}' -e x  # 当文件中只有一行时Q显C?br />  sed -e '1{$d;}' -e '$!{h;d;}' -e x  # 当文件中只有一行时Q不输出<br /> <br />  # 只显C匹配正则表辑ּ的行Q模?#8220;grep”Q?br />  sed -n '/regexp/p'               # Ҏ1<br />  sed '/regexp/!d'                 # Ҏ2<br /> <br />  # 只显C?#8220;?#8221;匚w正则表达式的行(模拟“grep -v”Q?br />  sed -n '/regexp/!p'              # Ҏ1Q与前面的命令相对应<br />  sed '/regexp/d'                  # Ҏ2Q类似的语法<br /> <br />  # 查找“regexp”q将匚w行的上一行显C出来,但ƈ不显C匹配行<br />  sed -n '/regexp/{g;1!p;};h'<br /> <br />  # 查找“regexp”q将匚w行的下一行显C出来,但ƈ不显C匹配行<br />  sed -n '/regexp/{n;p;}'<br /> <br />  # 昄包含“regexp”的行及其前后行,q在W一行之前加?#8220;regexp”所<br />  # 在行的行?Q类?#8220;grep -A1 -B1”Q?br />  sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h<br /> <br />  # 昄包含“AAA”?#8220;BBB”?#8220;CCC”的行QQ意次序)<br />  sed '/AAA/!d; /BBB/!d; /CCC/!d'  # 字串的次序不影响l果<br /> <br />  # 昄包含“AAA”?#8220;BBB”?#8220;CCC”的行Q固定次序)<br />  sed '/AAA.*BBB.*CCC/!d'<br /> <br />  # 昄包含“AAA”“BBB”?#8220;CCC”的行 Q模?#8220;egrep”Q?br />  sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # 多数sed<br />  gsed '/AAA\|BBB\|CCC/!d'                        # 对GNU sed有效<br /> <br />  # 昄包含“AAA”的段?Q段落间以空行分隔)<br />  # HHsed v1.5 必须?#8220;x;”后加?#8220;G;”Q接下来?个脚本都是这?br />  sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'<br /> <br />  # 昄包含“AAA”“BBB”?#8220;CCC”三个字串的段?QQ意次序)<br />  sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'<br /> <br />  # 昄包含“AAA”?#8220;BBB”?#8220;CCC”三者中M字串的段?QQ意次序)<br />  sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d<br />  gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # 只对GNU sed有效<br /> <br />  # 昄包含65个或以上字符的行<br />  sed -n '/^.\{65\}/p'<br /> <br />  # 昄包含65个以下字W的?br />  sed -n '/^.\{65\}/!p'            # Ҏ1Q与上面的脚本相对应<br />  sed '/^.\{65\}/d'                # Ҏ2Q更便一点的Ҏ<br /> <br />  # 昄部分文本——从包含正则表辑ּ的行开始到最后一行结?br />  sed -n '/regexp/,$p'<br /> <br />  # 昄部分文本——指定行号范围Q从W?至第12行,??2行)<br />  sed -n '8,12p'                   # Ҏ1<br />  sed '8,12!d'                     # Ҏ2<br /> <br />  # 昄W?2?br />  sed -n '52p'                     # Ҏ1<br />  sed '52!d'                       # Ҏ2<br />  sed '52q;d'                      # Ҏ3, 处理大文件时更有效率<br /> <br />  # 从第3行开始,?行显CZ?nbsp;  <br />  gsed -n '3~7p'                   # 只对GNU sed有效<br />  sed -n '3,${p;n;n;n;n;n;n;}'     # 其他sed<br /> <br />  # 昄两个正则表达式之间的文本Q包含)<br />  sed -n '/Iowa/,/Montana/p'       # 区分大小写方?br /> <br /> 选择性地删除特定行:<br /> --------<br /> <br />  # 昄通篇文档Q除了两个正则表辑ּ之间的内?br />  sed '/Iowa/,/Montana/d'<br /> <br />  # 删除文g中相ȝ重复行(模拟“uniq”Q?br />  # 只保留重复行中的W一行,其他行删?br />  sed '$!N; /^\(.*\)\n\1$/!P; D'<br /> <br />  # 删除文g中的重复行,不管有无盔R。注意hold space所能支持的~存<br />  # 大小Q或者用GNU sed?br />  sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'<br /> <br />  # 删除除重复行外的所有行Q模?#8220;uniq -d”Q?br />  sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'<br /> <br />  # 删除文g中开头的10?br />  sed '1,10d'<br /> <br />  # 删除文g中的最后一?br />  sed '$d'<br /> <br />  # 删除文g中的最后两?br />  sed 'N;$!P;$!D;$d'<br /> <br />  # 删除文g中的最?0?br />  sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # Ҏ1<br />  sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # Ҏ2<br /> <br />  # 删除8的倍数?br />  gsed '0~8d'                           # 只对GNU sed有效<br />  sed 'n;n;n;n;n;n;n;d;'                # 其他sed<br /> <br />  # 删除匚w式样的行<br />  sed '/pattern/d'                      # 删除含pattern的行。当然pattern<br />                                        # 可以换成M有效的正则表辑ּ<br /> <br />  # 删除文g中的所有空行(?#8220;grep '.' ”效果相同Q?br />  sed '/^$/d'                           # Ҏ1<br />  sed '/./!d'                           # Ҏ2<br /> <br />  # 只保留多个相ȝ行的W一行。ƈ且删除文仉部和N的空行?br />  # Q模?#8220;cat -s”Q?br />  sed '/./,/^$/!d'        #Ҏ1Q删除文仉部的IQ允许尾部保留一I<br />  sed '/^$/N;/\n$/D'      #Ҏ2Q允讔R部保留一IQ尾部不留空?br /> <br />  # 只保留多个相ȝ行的前两行?br />  sed '/^$/N;/\n$/N;//D'<br /> <br />  # 删除文g剙的所有空?br />  sed '/./,$!d'<br /> <br />  # 删除文gN的所有空?br />  sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # Ҏ有sed有效<br />  sed -e :a -e '/^\n*$/N;/\n$/ba'        # 同上Q但只对 gsed 3.02.*有效<br /> <br />  # 删除每个D落的最后一?br />  sed -n '/^$/{p;h;};/./{x;/./p;}'<br /> <br /> Ҏ应用Q?br /> --------<br /> <br />  # U除手册(man pageQ中的nroff标记。在Unix System V或bash shell下<br />  # ?echo'命o时可能需要加?-e 选项?br />  sed "s/.`echo \\\b`//g"    # 外层的双括号是必ȝQUnix环境Q?br />  sed 's/.^H//g'             # 在bash或tcsh? ?Ctrl-V 再按 Ctrl-H<br />  sed 's/.\x08//g'           # sed 1.5QGNU sedQssed所使用的十六进制的表示Ҏ<br /> <br />  # 提取新闻l或 e-mail 的邮件头<br />  sed '/^$/q'                # 删除W一行空行后的所有内?br /> <br />  # 提取新闻l或 e-mail 的正文部?br />  sed '1,/^$/d'              # 删除W一行空行之前的所有内?br /> <br />  # 从邮件头提取“Subject”Q标题栏字段Q,q移除开头的“Subject:”字样<br />  sed '/^Subject: */!d; s///;q'<br /> <br />  # 从邮件头获得回复地址<br />  sed '/^Reply-To:/q; /^From:/h; /./d;g;q'<br /> <br />  # 获取邮g地址。在上一个脚本所产生的那一行邮件头的基上进一步的非电邮<br />  # 地址的部分剃除。(见上一脚本Q?br />  sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'<br /> <br />  # 在每一行开头加上一个尖括号和空|引用信息Q?br />  sed 's/^/> /'<br /> <br />  # 每一行开头处的尖括号和空格删除(解除引用Q?br />  sed 's/^> //'<br /> <br />  # U除大部分的HTML标签Q包括跨行标{)<br />  sed -e :a -e 's/<[^>]*>//g;/</N;//ba'<br /> <br />  # 分成多Luuencode文g解码。移除文件头信息Q只保留uuencode~码部分?br />  # 文g必须以特定顺序传lsed。下面第一U版本的脚本可以直接在命令行下输入;<br />  # W二U版本则可以攑օ一个带执行权限的shell脚本中。(由Rahul Dhesi的一<br />  # 个脚本修改而来。)<br />  sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode   # vers. 1<br />  sed '/^end/,/^begin/d' "$@" | uudecode                    # vers. 2<br /> <br />  # 文件中的段落以字母序排序。段落间以(一行或多行Q空行分隔。GNU sed使用<br />  # 字元“\v”来表C垂直制表符Q这里用它来作ؓ换行W的占位W?#8212;—当然你也可以<br />  # 用其他未在文件中使用的字W来代替它?br />  sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'<br />  gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'<br /> <br />  # 分别压羃每个.TXT文gQ压~后删除原来的文件ƈ压~后?ZIP文g<br />  # 命名Z原来相同的名字(只是扩展名不同)。(DOS环境Q?#8220;dir /b”<br />  # 昄不带路径的文件名Q?br />  echo @echo off >zipup.bat<br />  dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat<br /> <br /> <br /> 使用SEDQSed接受一个或多个~辑命oQƈ且每d一行后׃ơ应用这些命令?br /> 当读入第一行输入后Qsed对其应用所有的命oQ然后将l果输出。接着再读入第?br /> 行输入,对其应用所有的命o……q复这个过E。上一个例子中sed由标准输入设<br /> 备(卛_令解释器Q通常是以道输入的Ş式)获得输入。在命o行给Z个或?br /> 个文件名作ؓ参数Ӟq些文g取代标准输入讑֤成ؓsed的输入。sed的输出将?br /> 送到标准输出Q显C器Q。因此:<br /> <br />  cat filename | sed '10q'         # 使用道输入<br />  sed '10q' filename               # 同样效果Q但不用管道输?br />  sed '10q' filename > newfile     # 输{U(重定向)到磁盘上<br /> <br /> 要了解sed命o的用说明,包括如何通过脚本文gQ而非从命令行Q来使用q些?br /> 令,请参阅《sed & awk》第二版Q作者Dale Dougherty和Arnold Robbins<br /> QO'ReillyQ?997Qhttp://www.ora.comQ,《UNIX Text Processing》,作?br /> Dale Dougherty和Tim O'ReillyQHayden BooksQ?987Q或者是Mike Arst写的?br /> E?#8212;—压羃包的名称?#8220;U-SEDIT2.ZIP”Q在许多站点上都扑־刎ͼ。要发掘sed<br /> 的潜力,则必d“正则表达?#8221;有够的理解。正则表辑ּ的资料可以看<br /> 《Mastering Regular Expressions》作者Jeffrey FriedlQO'reilly 1997Q?br /> Unixpȝ所提供的手册页Q?#8220;man”Q也会有所帮助Q试一下这些命?br /> “man sed”?#8220;man regexp”Q或者看“man ed”中关于正则表辑ּ的部分)Q但<br /> 手册提供的信息比?#8220;抽象”——q也是它一直ؓ人所诟病的。不q,它本来就?br /> 是用来教初学者如何用sed或正则表辑ּ的教材,而只是ؓ那些熟悉q些工具的h<br /> 提供的一些文本参考?br /> <br /> 括号语法Q前面的例子对sed命o基本上都使用单引P'...'Q而非双引?br /> Q?..."Q这是因为sed通常是在Unixq_上用。单引号下,Unix的shellQ命?br /> 解释器)不会对美元符Q?Q和后引P`...`Q进行解释和执行。而在双引号下<br /> 元W会被展开为变量或参数的|后引号中的命令被执行q以输出的结果代?br /> 后引号中的内宏V而在“csh”及其衍生的shell中用感叹号Q?Q时需要在其前<br /> 面加上{义用的反斜杠Q就像这P\!Q以保证上面所使用的例子能正常q行<br /> Q包括用单引号的情况下Q。DOS版本的Sed则一律用双引号Q?..."Q而不?br /> 引号来圈起命令?br /> <br /> '\t'的用法:Z使本文保持行文简z,我们在脚本中使用'\t'来表CZ个制?br /> W。但是现在大部分版本的sedq不能识?\t'的简写方式,因此当在命o行中?br /> 脚本输入制表W时Q你应该直接按TAB键来输入制表W而不是输?\t'。下列的?br /> 兯Y仉支持'\t'做ؓ一个正则表辑ּ的字元来表示制表W:awk、perl、HHsed?br /> sedmod以及GNU sed v3.02.80?br /> <br /> 不同版本的SEDQ不同的版本间的sed会有些不同之处,可以惌它们之间在语法上<br /> 会有差异。具体而言Q它们中大部分不支持在编辑命令中间用标{(:nameQ或?br /> 支命令(b,tQ,除非是放在那些的末尾。这文档中我们量选用了可UL性较?br /> 的语法,以大多数版本的sed的用户都能用这些脚本。不qGNU版本的sed允许?br /> 用更z的语法。想像一下当读者看C个很长的命o时的心情Q?br /> <br />    sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d<br /> <br /> 好消息是GNU sed能让命o更紧凑:<br /> <br />    sed '/AAA/b;/BBB/b;/CCC/b;d'      # 甚至可以写成<br />    sed '/AAA\|BBB\|CCC/b;d'<br /> <br /> 此外Q请注意虽然许多版本的sed接受?#8220;/one/ s/RE1/RE2/”q种?s'前带有空<br /> 格的命oQ但q些版本中有些却不接受这L命o:“/one/! s/RE1/RE2/”。这?br /> 只需要把中间的空格去掉就行了?br /> <br /> 速度优化Q当׃某种原因Q比如输入文件较大、处理器或硬盘较慢等Q需要提?br /> 命o执行速度Ӟ可以考虑在替换命令(“s/.../.../”Q前面加上地址表达式来<br /> 提高速度。D例来_<br /> <br />    sed 's/foo/bar/g' filename         # 标准替换命o<br />    sed '/foo/ s/foo/bar/g' filename   # 速度更快<br />    sed '/foo/ s//bar/g' filename      # 写Ş?br /> <br /> 当只需要显C文件的前面的部分或需要删除后面的内容Ӟ可以在脚本中使用“q”<br /> 命oQ退出命令)。在处理大的文gӞq会节省大量旉。因此:<br /> <br />    sed -n '45,50p' filename           # 昄W?5?0?br />    sed -n '51q;45,50p' filename       # 一P但快得多<br /> <br /> 如果你有其他的单行脚本想与大家分享或者你发现了本文档中错误的地方Q请发电<br /> 子邮件给本文档的作者(Eric PementQ。邮件中误得提供你所使用的sed版本?br /> 该sed所q行的操作系l及寚w题的适当描述。本文所指的单行脚本指命令行的长<br /> 度在65个字W或65个以下的sed脚本〔译?〕。本文档的各U脚本是׃下所列作<br /> 者所写或提供Q?br /> <br />  Al Aab                               # 建立?#8220;seders”邮g列表<br />  Edgar Allen                          # 许多斚w<br />  Yiorgos Adamopoulos                  # 许多斚w<br />  Dale Dougherty                       # 《sed & awk》作?br />  Carlos Duarte                        # 《do it with sed》作?br />  Eric Pement                          # 本文档的作?br />  Ken Pizzini                          # GNU sed v3.02 的作?br />  S.G. Ravenhall                       # 去html标签脚本<br />  Greg Ubben                           # 有诸多A献ƈ提供了许多帮?br /> -------------------------------------------------------------------------<br /> <br /> 译注1Q大部分情况下,sed脚本无论多长都能写成单行的Ş式(通过`-e'选项和`;'<br /> P——只要命o解释器支持,所以这里说的单行脚本除了能写成一行还寚w度有<br /> 所限制。因些单行脚本的意义不在于它们是以单行的形式出现。而是让用戯<br /> 方便地在命o行中使用q些紧凑的脚本才是其意义所在?/div><img src ="http://www.tkk7.com/Man/aggbug/369930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Man/" target="_blank">此号已被?/a> 2012-02-14 12:40 <a href="http://www.tkk7.com/Man/archive/2012/02/14/369930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell sed命o详解 http://www.tkk7.com/Man/archive/2012/02/14/369929.html此号已被?/dc:creator>此号已被?/author>Tue, 14 Feb 2012 04:39:00 GMThttp://www.tkk7.com/Man/archive/2012/02/14/369929.htmlhttp://www.tkk7.com/Man/comments/369929.htmlhttp://www.tkk7.com/Man/archive/2012/02/14/369929.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/369929.htmlhttp://www.tkk7.com/Man/services/trackbacks/369929.html

Table of Contents
1. Sed?
2. 定址
3. Sed命o
4. 选项
5. 元字W集
6. 实例
7. 脚本

1. Sed?/strong>

sed是一U在U编辑器Q它一ơ处理一行内宏V处理时Q把当前处理的行存储在时缓冲区中,UCؓ“模式I间”Qpattern spaceQ,接着用sed命o处理~冲Z的内容,处理完成后,把缓冲区的内定w往屏幕。接着处理下一行,q样不断重复Q直到文件末。文件内容ƈ没有 改变Q除非你使用重定向存储输出。Sed主要用来自动~辑一个或多个文gQ简化对文g的反复操作;~写转换E序{。以下介l的是Gnu版本的Sed 3.02?br />PS:如果想直接修Ҏ文gQ可以用下面的命?有些版本支持-i命o直接Ҏ文g)
sed  -i 's/properties/property/g'  build.xml


2. 定址

可以通过定址来定位你所希望~辑的行Q该地址用数字构成,用逗号分隔的两个行数表CZq两行ؓh的行的范_包括行数表示的那两行Q。如1Q?表示1Q?Q?行,元W号($)表示最后一行。范围可以通过数据Q正则表辑ּ或者二者结合的方式定 ?/p>


3. Sed命o

调用sed命o有两UŞ式:


sed [options] 'command' file(s)

sed [options] -f scriptfile file(s)


<
a/
在当前行后面加入一行文本?/p>

b lable
分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾?/p>

c/
用新的文本改变本行的文本?/p>

d
从模板块QPattern spaceQ位|删除行?/p>

D
删除模板块的W一行?/p>

i/
在当前行上面插入文本?/p>

h
拯模板块的内容到内存中的缓冲区?/p>

H
q加模板块的内容到内存中的缓冲区

g
获得内存~冲区的内容Qƈ替代当前模板块中的文本?/p>

G
获得内存~冲区的内容Qƈq加到当前模板块文本的后面?/p>

l
列表不能打印字符的清单?/p>

n
d下一个输入行Q用下一个命令处理新的行而不是用W一个命令?/p>

N
q加下一个输入行到模板块后面q在二者间嵌入一个新行,改变当前行号码?/p>

p
打印模板块的行?/p>

PQ大写)
打印模板块的W一行?/p>

q
退出Sed?/p>

r file
从file中读行?/p>

t label
if分支Q从最后一行开始,条g一旦满x者TQt命oQ将D分支到带有标L命o处,或者到脚本的末?/p>

T label
错误分支Q从最后一行开始,一旦发生错误或者TQt命oQ将D分支到带有标L命o处,或者到脚本的末?/p>

w file
写ƈq加模板块到file末尾?/p>

W file
写ƈq加模板块的W一行到file末尾?/p>

!
表示后面的命令对所有没有被选定的行发生作用?/p>

s/re/string
用string替换正则表达式re?/p>

=
打印当前行号码?/p>

#
把注释扩展到下一个换行符以前?/p>

以下的是替换标记

g表示行内全面替换?/p>

p表示打印行?/p>

w表示把行写入一个文件?/p>

x表示互换模板块中的文本和~冲Z的文本?/p>

y表示把一个字W翻译ؓ另外的字W(但是不用于正则表辑ּQ?/p>


4. 选项
<
-e command, --expression=command
允许多台~辑?/p>

-h, --help
打印帮助Qƈ昄bug列表的地址?/p>

-n, --quiet, --silent
取消默认输出?/p>

-f, --filer=script-file
引导sed脚本文g名?/p>

-V, --version
打印版本和版权信息?/p>


5. 元字W集
<
^
锚定行的开?如:/^sed/匚w所有以sed开头的行?/p>

$
锚定行的l束 如:/sed$/匚w所有以sedl尾的行?/p>

.
匚w一个非换行W的字符 如:/s.d/匚ws后接一个Q意字W,然后是d?/p>

*
匚w零或多个字符 如:/*sed/匚w所有模板是一个或多个I格后紧跟sed的行?/p>

[]
匚w一个指定范围内的字W,?[Ss]ed/匚wsed和Sed?/p>

[^]
匚w一个不在指定范围内的字W,如:/[^A-RT-Z]ed/匚w不包含A-R和T-Z的一个字母开_紧跟ed的行?/p>

/(../)
保存匚w的字W,如s//(love/)able//1rsQloveable被替换成lovers?/p>

&
保存搜烦字符用来替换其他字符Q如s/love/**&**/Qloveq成**love**?/p>

/<
锚定单词的开始,?//

/>
锚定单词的结束,?love/>/匚w包含以lovel尾的单词的行?/p>

x/{m/}
重复字符xQmơ,如:/0/{5/}/匚w包含5个o的行?/p>

x/{m,/}
重复字符x,臛_mơ,如:/o/{5,/}/匚w臛_?个o的行?/p>

x/{m,n/}
重复字符xQ至mơ,不多于nơ,如:/o/{5,10/}/匚w5--10个o的行?/p>

6. 实例
删除Qd命o
$ sed '2d' example-----删除example文g的第二行?/p>

$ sed '2,$d' example-----删除example文g的第二行到末所有行?/p>

$ sed '$d' example-----删除example文g的最后一行?/p>

$ sed '/test/'d example-----删除example文g所有包含test的行?/p>

替换Qs命o
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记Q则只有每行W一个匹配的test被替换成mytest?/p>

$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起用表C只打印那些发生替换的行。也是_如果某一行开头的test被替换成mytestQ就打印它?/p>

$ sed 's/^192.168.0.1/&localhost/' example-----&W号表示替换换字W串中被扑ֈ的部份。所有以192.168.0.1开头的行都会被替换成它自已?localhostQ变?92.168.0.1localhost?/p>

$ sed -n 's//(love/)able//1rs/p' example-----love被标Cؓ1Q所有loveable会被替换成loversQ而且替换的行会被打印出来?/p>

$ sed 's<0<00#g' example-----不论什么字W,紧跟着s命o的都被认为是新的分隔W,所以,“#”在这里是分隔W,代替了默认的“/”分隔W。表C把所?0替换?00?/p>

选定行的范围Q逗号
$ sed -n '/test/,/check/p' example-----所有在模板test和check所定的范围内的行都被打印?/p>

$ sed -n '5,/^test/p' example-----打印从第五行开始到W一个包含以test开始的行之间的所有行?/p>

$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行Q每行的末尾用字W串sed test替换?/p>

多点~辑Qe命o
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命o。如例子所C,W一条命令删??行,W二条命令用check替换test。命令的?行顺序对l果有媄响。如果两个命令都是替换命令,那么W一个替换命令将影响W二个替换命令的l果?/p>

$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋倹{?/p>

从文件读入:r命o
$ sed '/test/r file' example-----file里的内容被读q来Q显C在与test匚w的行后面Q如果匹配多行,则file的内容将昄在所有匹配行的下面?/p>

写入文gQw命o
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里?/p>


q加命oQa命o
$ sed '/^test/a//--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命oa后面有一个反斜杠?/p>

插入Qi命o
$ sed '/test/i//

new line

-------------------------' example

如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面?/p>

下一个:n命o
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匚w行的下一行,替换q一行的aaQ变为bbQƈ打印该行Q然后l?/p>

变ŞQy命o
$ sed '1,10y/abcde/ABCDE/' example-----?--10行内所有abcde转变为大写,注意Q正则表辑ּ元字W不能用这个命令?/p>

退出:q命o
$ sed '10q' example-----打印完第10行后Q退出sed?/p>

保持和获取:h命o和G命o
$ sed -e '/test/h' -e '$G example-----在sed处理文g的时候,每一行都被保存在一个叫模式I间的时缓冲区中,除非行被删除或者输取消Q否则所有被处理的行都将 打印在屏q上。接着模式I间被清I,q存入新的一行等待处理。在q个例子里,匚wtest的行被找到后Q将存入模式I间Qh命o其复制q存入一个称Z 持缓存区的特D缓冲区内。第二条语句的意思是Q当到达最后一行后QG命o取出保持~冲区的行,然后把它攑֛模式I间中,且追加到现在已经存在于模式空间中 的行的末。在q个例子中就是追加到最后一行。简单来_M包含test的行都被复制q追加到该文件的末尾?/p>

保持和互换:h命o和x命o
$ sed -e '/test/h' -e '/check/x' example -----互换模式I间和保持缓冲区的内宏V也是把包含test与check的行互换?/p>

7. 脚本
Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文g名。Sed对于脚本中输入的命o非常挑剔Q在命o的末不能有MI白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行ؓ注释行,且不能跨行?/p>


比如Q如果要打印出含有字?#8221;1024”的行Q我可能会用:
cat filename | sed –n ‘/1024/p’sed命o详解!!(要学习shell?朋友要好好看?


摘自Q?div>http://blog.csdn.net/dawnstar_hoo/article/details/4043887


]]>文本处理命o:sort、uniqhttp://www.tkk7.com/Man/archive/2012/02/14/369921.html此号已被?/dc:creator>此号已被?/author>Tue, 14 Feb 2012 03:29:00 GMThttp://www.tkk7.com/Man/archive/2012/02/14/369921.htmlhttp://www.tkk7.com/Man/comments/369921.htmlhttp://www.tkk7.com/Man/archive/2012/02/14/369921.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/369921.htmlhttp://www.tkk7.com/Man/services/trackbacks/369921.htmlsort命o

  sort命o的功能是Ҏ件中的各行进行排序。sort命o有许多非常实用的选项Q这些选项最初是用来Ҏ据库格式的文件内容进行各U排序操作的。实际上Qsort命o可以被认为是一个非常强大的数据理工具Q用来管理内容类似数据库记录的文件?br />
  Sort命o逐行Ҏ件中的内容进行排序,如果两行的首字符相同Q该命ol比较这两行的下一字符Q如果还相同Q将l箋q行比较?br />
  语法Q?br />
  sort Q选项Q?文g

  说明Qsort命oҎ定文件中所有的行进行排序,q将l果昄在标准输Z。如不指定输入文件或使用“- ”Q则表示排序内容来自标准输入?br />
  sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最的字符序列。缺省情况下以整行ؓ关键字按ASCII字符序q行排序?br />
  改变~省讄的选项主要有:

  - m 若给定文件已排好序,合ƈ文g?br />
  - c 查给定文件是否已排好序,如果它们没有都排好序Q则打印一个出错信息,q以状态?退出?br />
  - u Ҏ序后认ؓ相同的行只留其中一行?br />
  - o 输出文g 排序输出写到输出文件中而不是标准输出,如果输出文g是输入文件之一Qsort先将该文件的内容写入一个时文Ӟ然后再排序和写输出结果?br />
  改变~省排序规则的选项主要有:

  - d 按字兔R序排序,比较时仅字母、数字、空格和制表W有意义?br />
  - f 小写字母与大写字母同等对待?br />
  - I 忽略非打印字W?br />
  - M 作ؓ月䆾比较Q?#8220;JAN”<“FEB”<¼ <“DEC”?br />
  - r 按逆序输出排序l果?br />
  Qposl - pos2 指定一个或几个字段作ؓ排序关键字,字段位置从posl开始,到pos2为止Q包括poslQ不包括pos2Q。如不指定pos2Q则关键字ؓ从posl到行。字D和字符的位|从0开始?br />
  - b 在每行中L排序关键字时忽略前导的空白(I格和制表符Q?br />
  - t separator 指定字符separator作ؓ字段分隔W?br />
  下面通过几个例子来讲qsort的用?br />

  用sort命o对text文g中各行排序后输出其结果。请注意Q在原文件的W二、三行上的第一个单词完全相同,该命令将从它们的W二个单词vegetables与fruit的首字符处l进行比较?br />
  $ cat text

  vegetable soup

  fresh vegetables

  fresh fruit

  lowfat milk

  $ sort text

  fresh fruit
 
  fresh vegetables

  lowfat milk

  vegetable soup

  用户可以保存排序后的文g内容Q或把排序后的文件内容输打印机。下例中用户把排序后的文件内容保存到名ؓresult的文件中?br />
  $ sort text>result


  以第2个字D作为排序关键字Ҏ件example的内容进行排序?br />
  $ sort +1-2 example


  对于file1和file2文g内容反向排序Q结果放在outfile中,利用W?个字D늚W一个字W作为排序关键字?br />
  $ sort -r -o outfile +1.0 -1.1 example


  sort排序常用于在道中与其他命oq用Q组合完成比较复杂的功能Q如利用道当前工作目录中的文仉给sortq行排序Q排序关键字是第6个至W?个字Dc?br />
  $ ls - l | sort +5 - 7

  sort命o也可以对标准输入q行操作。例如,如果您想把几个文件文本行合ƈQƈ对合q后的文本行q行排序Q您可以首先用命令cat把多个文件合qӞ 然后用管道操作把合ƈ后的文本行输入给命osortQsort命o输些合q及排序后的文本行。在下面的例子中Q文件veglist与文?fruitlist的文本行l过合ƈ与排序后被保存到文gclist中?br />
  $ cat veglist fruitlist | sort > clist


uniq命o

  文gl过处理后在它的输出文g中可能会出现重复的行。例如,使用cat命o两个文件合q后Q再使用sort命oq行排序Q就可能出现重复行。这时可以用uniq命o这些重复行从输出文件中删除Q只留下每条记录的唯一h?br />
  语法Quniq Q选项Q?文g

  说明Q这个命令读取输入文Ӟq比较相ȝ行。在正常情况下,W二个及以后更多个重复行被删去Q行比较是根据所用字W集的排序序列进行的。该命o加工后的l果写到输出文g中。输入文件和输出文g必须不同。如果输入文件用“- ”表示Q则从标准输入读取?br />
  该命令各选项含义如下Q?br />
  - c 昄输出中,在每行行首加上本行在文g中出现的ơ数。它可取? u? d选项?br />
  - d 只显C重复行?br />
  - u 只显C文件中不重复的各行?br />
  - n 前n个字D与每个字段前的I白一赯忽略。一个字D|一个非I格、非制表W的字符Ԍ彼此由制表符和空格隔开Q字D从0开始编P?br />
  +n 前n个字W被忽略Q之前的字符被蟩q(字符?开始编P?br />
  - f n ? n相同Q这里n是字D|?br />
  - s n 与+n相同Q这里n是字W数?br />
  例如Q?br />
  1. 昄文gexample中不重复的行?br />
  uniq - u example

  2. 昄文gexample中不重复的行Q从W?个字D늚W?个字W开始做比较?br />
  uniq - u - 1 +1 example


摘自Q?div>http://www.linuxsir.org/bbs/showthread.php?s=&threadid=5110


]]>shell cut用法 http://www.tkk7.com/Man/archive/2012/02/08/369607.html此号已被?/dc:creator>此号已被?/author>Wed, 08 Feb 2012 08:28:00 GMThttp://www.tkk7.com/Man/archive/2012/02/08/369607.htmlhttp://www.tkk7.com/Man/comments/369607.htmlhttp://www.tkk7.com/Man/archive/2012/02/08/369607.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/369607.htmlhttp://www.tkk7.com/Man/services/trackbacks/369607.html

cut是以每一行ؓ一个处理对象的Q这U机制和sed是一L?/p>

2 cut一般以什么ؓ依据? 也就是说Q我怎么告诉cut我想定位到的剪切内容?

cut命o主要是接受三个定位方法:

W一Q字节(bytesQ,用选项-b

W二Q字W(charactersQ,用选项-c

W三Q域QfieldsQ,用选项-f

3 ?#8220;字节”定位Q给个最单的例子?

举个例子吧,当你执行ps命oӞ会输出类似如下的内容Q?br />[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)

如果我们x取每一行的W?个字节,pP
[rocrocket@rocrocket programming]$ who|cut -b 3
c
c
c

看明白了吧,-b后面可以讑֮要提取哪一个字节,其实-b?之间没有I格也是可以的,但推荐有I格:)

4 如果“字节”定位中,我想提取W?Q第4、第5和第8个字节,怎么?

-b支持形如3-5的写法,而且多个定位之间用逗号隔开成了。看看例子吧Q?br />[rocrocket@rocrocket programming]$ who|cut -b 3-5,8
croe
croe
croe

但有一点要注意Qcut命o如果使用?b选项Q那么执行此命oӞcut会先?b后面所有的定位q行从小到大排序Q然后再提取。可不能颠倒定位的序哦。这个例子就可以说明q个问题Q?br />[rocrocket@rocrocket programming]$ who|cut -b 8,3-5
croe
croe
croe

5 q有哪些cM“3-5”q样的小技巧,列D一下吧!
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
[rocrocket@rocrocket programming]$ who|cut -b -3
roc
roc
roc
[rocrocket@rocrocket programming]$ who|cut -b 3-
crocket :0 2009-01-08 11:07
crocket pts/0 2009-01-08 11:23 (:0.0)
crocket pts/1 2009-01-08 14:15 (:0.0)

惛_你也看到了,-3表示从第一个字节到W三个字节,?-表示从第三个字节到行。如果你l心Q你可以看到q两U情况下Q都包括了第三个字节“c”?br />如果我执行who|cut -b -3,3-Q你觉得会如何呢Q答案是输出整行Q不会出现连l两个重叠的c的。看Q?br />[rocrocket@rocrocket programming]$ who|cut -b -3,3-
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)

6 l个以字Wؓ定位标志的最单的例子?

下面例子你似曄识,提取W?Q第4Q第5和第8个字W:
[rocrocket@rocrocket programming]$ who|cut -c 3-5,8
croe
croe
croe

不过Q看着怎么?b没有什么区别啊Q莫?b?c作用一? 其实不然Q看似相同,只是因ؓq个例子丄不好Qwho输出的都是单字节字符Q所以用-b?c没有区别Q如果你提取中文Q区别就看出来了Q来Q看看中文提取的情况Q?br />[rocrocket@rocrocket programming]$ cat cut_ch.txt
星期一
星期?br />星期?br />星期?br />[rocrocket@rocrocket programming]$ cut -b 3 cut_ch.txt
?
?
?
?
[rocrocket@rocrocket programming]$ cut -c 3 cut_ch.txt

?br />?br />?/p>

看到了吧Q用-c则会以字Wؓ单位Q输出正常;?b只会d的以字节Q?位二q制位)来计,输出是q?br />既然提到了这个知识点Q就再补充一句,如果你学有余力,提高一下?br />当遇到多字节字符Ӟ可以使用-n选项Q?n用于告诉cut不要多字节字符拆开。例子如下:
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -b 2
?
?
?
?
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 2

[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 1,2,3
?br />?br />?br />?/p>

6 域是怎么回事呢?解释解释:)

Z么会?#8220;?#8221;的提取呢Q因为刚才提到的-b?c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。这时?#8220;?#8221;派上用Z?/p>

Q下面的讲解内容是在假设你对/etc/passwd文g的内容和l织形式比较了解的情况下q行的。)

如果你观察过/etc/passwd文gQ你会发玎ͼ它ƈ不像who的输Z息那样具有固定格式,而是比较零散的排放。但是,冒号在这个文件的每一行中都vC非常重要的作用,冒号用来隔开每一个项?/p>

我们很幸q,cut命o提供了这L提取方式Q具体的说就是设|?#8220;间隔W?#8221;Q再讄“提取W几个域”Q就OK了!

?etc/passwd的前五行内容ZQ?br />[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1
root
bin
daemon
adm
lp

看到了吧Q用-d来设|间隔符为冒P然后?f来设|我要取的是W一个域Q再按回车,所有的用户名就都列出来了!呵呵 有成感吧!
当然Q在讑֮-fӞ也可以用例?-5或?-cM的格式:
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1,3-5,7
root:0:0:root:/bin/bash
bin:1:1:bin:/sbin/nologin
daemon:2:2:daemon:/sbin/nologin
adm:3:4:adm:/sbin/nologin
lp:4:7:lp:/sbin/nologin
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f -2
root:x
bin:x
daemon:x
adm:x
lp:x

7 如果遇到I格和制表符Ӟ怎么分L呢?我觉得有点ؕQ怎么办?

有时候制表符实很难辨认Q有一个方法可以看ZD늩格到底是pq个I格l成的还是由一个制表符l成的?br />[rocrocket@rocrocket programming]$ cat tab_space.txt
this is tab    finish.
this is several space finish.
[rocrocket@rocrocket programming]$ sed -n l tab_space.txt
this is tab\tfinish.$
this is several space finish.$

看到了吧Q如果是制表W(TABQ,那么会显CZؓ\tW号Q如果是I格Q就会原hC?br />通过此方法即可以判断制表W和I格了?br />注意Q上面sed -n后面的字W是L的小写字母哦Q不要看错。(字母l、数?q有或运|真是隑ֈ辨啊…Q看来这三个比制表符q难分L…Q?/p>

8 我应该在cut -d中用什么符h讑֮制表W或I格?

悄悄的告诉你Qcut?d选项的默认间隔符是制表W,所以当你就是要使用制表W的时候,完全可以省?d选项Q而直接用Qf来取域就可以了!攑ֿQ相信我Q?br />如果你设定一个空gؓ间隔W,那么pP
[rocrocket@rocrocket programming]$ cat tab_space.txt |cut -d ' ' -f 1
this
this

注意Q两个单引号之间可确实要有一个空格哦Q不能偷懒?br />而且Q你只能?d后面讄一个空|可不许设|多个空|因ؓcut只允讔R隔符是一个字W?br />[rocrocket@rocrocket programming]$ cat tab_space.txt |cut -d ' ' -f 1
cut: the delimiter must be a single character
Try `cut --help' for more information.

9 我想ps和cut命o配合使用Ӟ怎么L在最后两行出现重复现象?

q个问题的具体描q是如下q样的?br />当cut和ps配合Ӟ
[rocrocket@rocrocket programming]$ ps
PID TTY TIME CMD
2977 pts/0 00:00:00 bash
5032 pts/0 00:00:00 ps
[rocrocket@rocrocket programming]$ ps|cut -b3
P
9
0
0

看,最后的0重复了两ơ!Q而且Q我也试qps ef或ps aux均有此问题?/p>

而当ps和其他命令配合时Q均无此问题Q例如cut和who配合则正常:
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
[rocrocket@rocrocket programming]$ who|cut -b3
c
c
c

q个看似怪异的o我百思不得其解的问题Q得Csunway的解{,在此非常感谢他。我发问的原帖地址在E此处Q?br />其实q个问题是这LQps|cut会自w创Z个进E,所以当ps时也会提取出q个q程Q然后通过道输出到cutQ所以cut截取后,多Z一行,之所以会重复上一行内容,是由于我们恰巧取C和上一行内容相同的字符而已?br />你测试下执行ps和ps|catq道原因了Q?)

10 cut有哪些缺陷和不Q?/p>

猜出来了吧?对,是在处理多I格时?br />如果文g里面的某些域是由若干个空格来间隔的,那么用cut有炚w烦了Q因为cut只擅长处?#8220;以一个字W间?#8221;的文本内?/p>


摘自Q?div>http://hi.baidu.com/cunseve7n/blog/item/0863e5265cecb60a4c088db2.html


]]>
Linux-tar命o http://www.tkk7.com/Man/archive/2012/02/08/369596.html此号已被?/dc:creator>此号已被?/author>Wed, 08 Feb 2012 07:16:00 GMThttp://www.tkk7.com/Man/archive/2012/02/08/369596.htmlhttp://www.tkk7.com/Man/comments/369596.htmlhttp://www.tkk7.com/Man/archive/2012/02/08/369596.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/369596.htmlhttp://www.tkk7.com/Man/services/trackbacks/369596.htmlҎ应用举例Q?/span>
带着目录一h?/span>
tar -cvf - "com/hello/demo.java" | tar -C "d:/temp" -xvf -
把当?#8220;com/hello/”目录下的demo.java文gq着目录“com/hello/”一h贝到“d:/temp”目录?br />

正文Q?br />[root@linux ~]# tar [-cxtzjvfpPN] 文g与目?....
参数Q?br />-c Q徏立一个压~文件的参数指o(create 的意?Q?br />-x Q解开一个压~文件的参数指oQ?br />-t Q查?tarfile 里面的文Ӟ
特别注意Q在参数的下达中Q?c/x/t 仅能存在一个!不可同时存在Q?br />因ؓ不可能同时压~与解压~?br />-z Q是否同时具?gzip 的属性?亦即是否需要用 gzip 压羃Q?br />-j Q是否同时具?bzip2 的属性?亦即是否需要用 bzip2 压羃Q?br />-v Q压~的q程中显C文Ӟq个常用Q但不徏议用在背景执行过E!
-f Q用档名,L意,?f 之后要立x档名喔!不要再加参数Q?br />   例如使用?tar -zcvfP tfile sfile』就是错误的写法Q要写成
   ?tar -zcvPf tfile sfile』才对喔Q?br />-p Q用原文g的原来属性(属性不会依据用者而变Q?br />-P Q可以用绝对\径来压羃Q?br />-N Q比后面接的日期(yyyy/mm/dd)q要新的才会被打包进新徏的文件中Q?br />--exclude FILEQ在压羃的过E中Q不要将 FILE 打包Q?br />范例Q?br />范例一Q将整个 /etc 目录下的文g全部打包成ؓ /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压~!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,?gzip 压羃
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,?bzip2 压羃
# 特别注意Q在参数 f 之后的文件档名是自己取的Q我们习惯上都用 .tar 来作L识?br /># 如果?z 参数Q则?.tar.gz ?.tgz 来代?gzip 压羃q的 tar file ?br /># 如果?j 参数Q则?.tar.bz2 来作为附档名啊~
# 上述指o在执行的时候,会显CZ个警告讯息:
# 『tar: Removing leading `/' from member names』那是关於绝对\径的Ҏ讑֮?
范例二:查阅上述 /tmp/etc.tar.gz 文g内有哪些文gQ?br />[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压羃Q所以要查阅?tar file 内的文gӞ
# 得要加?z q个参数了!q很重要的!

范例三:?/tmp/etc.tar.gz 文g解压~在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预讄情况下,我们可以压~档在Q何地方解开的!以这个范例来_
# 我先工作目录变换到 /usr/local/src 底下Qƈ且解开 /tmp/etc.tar.gz Q?br /># 则解开的目录会?/usr/local/src/etc 呢!另外Q如果您q入 /usr/local/src/etc
# 则会发现Q该目录下的文g属性与 /etc/ 可能会有所不同喔!

范例四:?/tmp 底下Q我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查?tarfile 内的文g名称Q如果单只要一个文Ӟ
# 可以透过q个方式来下达!注意刎ͼ etc.tar.gz 内的根目?/ 是被拿掉了!

范例五:?/etc/ 内的所有文件备份下来,q且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# q个 -p 的属性是很重要的Q尤其是当您要保留原本文件的属性时Q?br />
范例六:?/home 当中Q比 2005/06/01 新的文g才备?br />[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

范例七:我要备䆾 /home, /etc Q但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:?/etc/ 打包后直接解开?/tmp 底下Q而不产生文gQ?br />[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# q个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的Q?br /># 要注意的地方在於输出档变?- 而输入档也变?- Q又有一?| 存在?br /># q分别代?standard output, standard input 与管U命令啦Q?br /># q部分我们会?Bash shell Ӟ再次提到q个指o跟大家再解释啎ͼ


 
 
gzip, zcat 命o
[root@linux ~]# gzip [-cdt#] 档名
[root@linux ~]# zcat 档名.gz
参数Q?br />-c Q将压羃的资料输出到萤幕上,可透过资料重导向来处理;
-d Q解压羃的参敎ͼ
-t Q可以用来检验一个压~档的一致性~看看文g有无错误Q?br />-# Q压~等U,-1 最快,但是压羃比最差?9 最慢,但是压羃比最好!预设?-6 ?br />范例Q?br />范例一Q将 /etc/man.config 複制?/tmp Qƈ且以 gzip 压羃
[root@linux ~]# cd /tmp
[root@linux tmp]# cp /etc/man.config .
[root@linux tmp]# gzip man.config
# 此时 man.config 会变?man.config.gz Q?
范例二:范例一的文件内容读出来Q?br />[root@linux tmp]# zcat man.config.gz
# 此时萤幕上会昄 man.config.gz 解压~之后的文g内容Q!

范例三:范例一的文件解压羃
[root@linux tmp]# gzip -d man.config.gz

范例四:范例三解开?man.config 用最佳的压羃比压~,q保留原本的文g
[root@linux tmp]# gzip -9 -c man.config > man.config.gz
 
 
bzip2, bzcat 命o
[root@linux ~]# bzip2 [-cdz] 档名
[root@linux ~]# bzcat 档名.bz2
参数Q?br />-c Q将压羃的过E生的资料输出到萤q上Q?br />-d Q解压羃的参?br />-z Q压~的参数
-# Q与 gzip 同样的,都是在计压~比的参敎ͼ -9 最佻I -1 最快!
范例Q?br />范例一Q将刚刚?/tmp/man.config ?bzip2 压羃
[root@linux tmp]# bzip2 -z man.config
# 此时 man.config 会变?man.config.bz2 Q?
范例二:范例一的文件内容读出来Q?br />[root@linux tmp]# bzcat man.config.bz2
# 此时萤幕上会昄 man.config.bz2 解压~之后的文g内容Q!

范例三:范例一的文件解压羃
[root@linux tmp]# bzip2 -d man.config.bz2

范例四:范例三解开?man.config 用最佳的压羃比压~,q保留原本的文g
[root@linux tmp]# bzip2 -9 -c man.config > man.config.bz2
 
 
compress 命o
[root@linux ~]# compress [-dcr] 文g或目?br />参数Q?br />-d Q用来解压羃的参?br />-r Q可以连同目录下的文件也同时l予压羃呢!
-c Q将压羃资料输出成ؓ standard output (输出到萤q?
范例Q?br />范例一Q将 /etc/man.config 複制?/tmp Qƈ加以压羃
[root@linux ~]# cd /tmp
[root@linux tmp]# cp /etc/man.config .
[root@linux tmp]# compress man.config
[root@linux tmp]# ls -l
-rw-r--r-- 1 root root 2605 Jul 27 11:43 man.config.Z
范例二:刚刚的压羃档解开
[root@linux tmp]# compress -d man.config.Z

范例三:?man.config 压羃成另外一个文件来备䆾
[root@linux tmp]# compress -c man.config > man.config.back.Z
[root@linux tmp]# ll man.config*
-rw-r--r-- 1 root root 4506 Jul 27 11:43 man.config
-rw-r--r-- 1 root root 2605 Jul 27 11:46 man.config.back.Z
# q个 -c 的参数比较有!他会压~过E的资料输出到萤q上Q而不是写入成?br /># file.Z 文g。所以,我们可以透过资料重导向的方法将资料输出成ؓ另一个档名?br /># x资料重导向Q我们会?bash shell 当中详细谈论的啦Q?br />
 
 
dd 命o
[root@linux ~]# dd if="input_file" of="outptu_file" bs="block_size" \
count="number"
参数Q?br />if Q就?input file 啎ͽ也可以是装置喔!
of Q就?output file 喔~也可以是装置Q?br />bs Q规划的一?block 的大,如果没有讑֮Ӟ预设?512 bytes
countQ多个 bs 的意思?br />范例Q?
范例一Q将 /etc/passwd 备䆾?/tmp/passwd.back 当中
[root@linux ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
[root@linux ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r-- 1 root root 1746 Aug 25 14:16 /etc/passwd
-rw-r--r-- 1 root root 1746 Aug 29 16:57 /tmp/passwd.back
# 仔细的看一下,我的 /etc/passwd 文g大小?1746 bytesQ因为我没有讑֮ bs Q?br /># 所以预设是 512 bytes Z个单位,因此Q上面那?3+1 表示?3 个完整的
# 512 bytesQ以及未?512 bytes 的另一?block 的意思啦Q?br /># 事实上,感觉好像?cp q个指o啦~

范例二:备䆾 /dev/hda ?MBR
[root@linux ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out
# q就得好好瞭解一下啰~我们知道整颗硬盘的 MBR ?512 bytesQ?br /># 是攑֜盘的第一?sector 啦,因此Q我可以利用q个方式来将
# MBR 内的所有资料都U录下来Q真的很厉害吧! ^_^

范例三:整?/dev/hda1 partition 备䆾下来?br />[root@linux ~]# dd if=/dev/hda1 of=/some/path/filenaem
# q个指o很厉宛_Q将整个 partition 的内容全部备份下来~
# 后面接的 of 必须要不是在 /dev/hda1 的目录内啊~否则Q怎么MM完~
# q个动作是很有效用的Q如果改天你必须要完整的整?partition 的内容填回去Q?br /># 则可以利?dd if=/some/file of=/dev/hda1 来将资料写入到硬盘当中?br /># 如果惌整个盘备䆾的话Q就cM Norton ?ghost 软体一般,
# ?disk ?disk Q嘿嘿~利用 dd 可以啦~厉宛_宻I

 
 
cpio 命o
[root@linux ~]# cpio -covB > [file|device] <==备䆾
[root@linux ~]# cpio -icduv < [file|device] <==q原
参数Q?br />-o Q将资料 copy 输出到文件或装置?br />-i Q将资料自文件或装置 copy 出来pȝ当中
-t Q查?cpio 建立的文件或装置的内?br />-c Q一U较新的 portable format 方式储存
-v Q让储存的过E中文g名称可以在萤q上昄
-B Q让预设?Blocks 可以增加?5120 bytes Q预设是 512 bytes Q?br />   q样的好处是可以让大文g的储存速度加快(请参?i-nodes 的观?
-d Q自动徏立目录!由於 cpio 的内容可能不是在同一个目录内Q?br />如此的话在反备䆾的过E会有问题! q个时候加?-d 的话Q?br />可以自动的需要的目录建立h了!
-u Q自动的较新的文g覆盖较旧的文Ӟ
范例Q?br />范例一Q将所有系l上的资料通通写入磁带机内!
[root@linux ~]# find / -print | cpio -covB > /dev/st0
# 一般来_使用 SCSI 介面的磁带机Q代h /dev/st0 喔!
范例二:查磁带机上面有什么文Ӟ
[root@linux ~]# cpio -icdvt < /dev/st0
[root@linux ~]# cpio -icdvt < /dev/st0 > /tmp/content
# W一个动作当中,会将带机内的档名列出到萤幕上面Q而我们可以透过W二个动作,
# 所有的档名通通纪录到 /tmp/content 文g去!

范例三:磁带上的资料还原回来~
[root@linux ~]# cpio -icduv < /dev/st0
# 一般来_使用 SCSI 介面的磁带机Q代h /dev/st0 喔!

范例四:?/etc 底下的所有『文件』都备䆾?/root/etc.cpio 中!
[root@linux ~]# find /etc -type f | cpio -o > /root/etc.cpio
# q样p够备份啰~您也可以将资料?cpio -i < /root/etc.cpio
# 来将资料捉出来!Q!Q?br />
 摘自Q?div>http://wenku.baidu.com/view/81818707e87101f69e3195c1.html


]]>Linux shell脚本的字W串截取http://www.tkk7.com/Man/archive/2012/02/07/369504.html此号已被?/dc:creator>此号已被?/author>Tue, 07 Feb 2012 02:08:00 GMThttp://www.tkk7.com/Man/archive/2012/02/07/369504.htmlhttp://www.tkk7.com/Man/comments/369504.htmlhttp://www.tkk7.com/Man/archive/2012/02/07/369504.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/369504.htmlhttp://www.tkk7.com/Man/services/trackbacks/369504.html

Linux 的字W串截取很有用。有八种Ҏ?/strong>

摘自Q?/span>http://blog.csdn.net/gumanren/article/details/5601544

 


假设有变?/span> var=http://www.hao.com/123.htm

.

 

一 # h取,删除左边字符Q保留右边字W?/span>

 

echo ${var#*//}

其中 var 是变量名Q?/strong># hq算W,*// 表示从左边开始删除第一?// 号及左边的所有字W?/span>

卛_?/strong> http://

l果?Q?/span>www.hao.com/123.htm


 

?## h取,删除左边字符Q保留右边字W?/strong>

echo ${var##*/}

##*/ 表示从左边开始删除最后(最双Q一?/ 号及左边的所有字W?/span>

卛_?/span> http://www.hao.com/          

l果?/strong>: 123.htm

 

 

?%h取,删除双字符Q保留左边字W?/strong>

echo ${var%/*}

%/* 表示从右边开始,删除W一?/ 号及双的字W?/span>

l果是:http://www.hao.com


 

?/span> %% h取,删除双字符Q保留左边字W?/span>

echo ${var%%/*}

%%/* 表示从右边开始,删除最后(最左边Q一?/ 号及双的字W?/span>

l果是:http:

 

 

?从左边第几个字符开始,及字W的个数

echo ${var:0:5}

 

其中?0 表示左边W一个字W开始,5 表示字符的M数?/span>

l果是:http:

 

 

?从左边第几个?/span>W开始,一直到l束?/span>

echo ${var:7}

其中?7 表示左边W?个字W开始,一直到l束?/span>

l果?/span> Q?/span>www.hao.com/123.htm


 

?从右边第几个字符开始,及字W的个数

echo ${var:0-7:3}

 

其中?0-7 表示双vW七个字W开始,3 表示字符的个数?/span>

l果?/span>Q?/span>123


 

?从右边第几个字符开始,一直到l束?/span>

echo ${var:0-7}


表示从右边第七个字符开始,一直到l束?/span>

l果是:123.htm



注:Q左边的W一个字W是?0 表示Q右边的W一个字W用 0-1 表示Q?/span>



]]>
TFTP 在solaris10上传文gLp|http://www.tkk7.com/Man/archive/2011/10/10/360420.html此号已被?/dc:creator>此号已被?/author>Mon, 10 Oct 2011 10:31:00 GMThttp://www.tkk7.com/Man/archive/2011/10/10/360420.htmlhttp://www.tkk7.com/Man/comments/360420.htmlhttp://www.tkk7.com/Man/archive/2011/10/10/360420.html#Feedback0http://www.tkk7.com/Man/comments/commentRss/360420.htmlhttp://www.tkk7.com/Man/services/trackbacks/360420.html最q在solaris使用TFTP传文件Lp|Q抓包分析发现UDP层的checksumg正确。将其关闭后则能正常发送了?/span>


Solaris 10上关?/span>checksum的方法如下:

put that into /etc/system and reboot:

set ip:dohwcksum=0



]]>
[shell]在windows下自动把你修改过的文件塞到指定的jar文g?/title><link>http://www.tkk7.com/Man/archive/2011/06/02/351583.html</link><dc:creator>此号已被?/dc:creator><author>此号已被?/author><pubDate>Thu, 02 Jun 2011 03:52:00 GMT</pubDate><guid>http://www.tkk7.com/Man/archive/2011/06/02/351583.html</guid><wfw:comment>http://www.tkk7.com/Man/comments/351583.html</wfw:comment><comments>http://www.tkk7.com/Man/archive/2011/06/02/351583.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/Man/comments/commentRss/351583.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Man/services/trackbacks/351583.html</trackback:ping><description><![CDATA[<p><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">功能介:</span></strong></p> <p><span style="font-size: 12pt; font-family: Arial;">aj.sh</span>        <span style="font-size: 12pt; font-family: 宋体;">自动把你</span><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: Arial;">版本?/span></strong><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: 宋体;">下处?/span></strong><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: Arial;">checkOut</span></strong><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: 宋体;">状?/span></strong><span style="font-size: 12pt; font-family: 宋体;">的非</span><span style="font-size: 12pt; font-family: Arial;">java</span><span style="font-size: 12pt; font-family: 宋体;">文g?/span><span style="font-size: 12pt; font-family: Arial;">java</span><span style="font-size: 12pt; font-family: 宋体;">源码~译后的</span><span style="font-size: 12pt; font-family: Arial;">class</span><span style="font-size: 12pt; font-family: 宋体;">文gQ塞到指定的</span><span style="font-size: 12pt; font-family: Arial;">jar</span><span style="font-size: 12pt; font-family: 宋体;">文g中?/span></p> <p><span style="font-size: 12pt; font-family: Arial;">aj24.sh</span>    <span style="font-size: 12pt; font-family: 宋体;">自动把你<strong><span style="font-weight: bold; background: none repeat scroll 0% 0% #ffcc00;">最q?/span></strong></span><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: Arial;">24</span></strong><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: 宋体;">时内修改过?/span></strong><span style="font-size: 12pt; font-family: 宋体;">的非</span><span style="font-size: 12pt; font-family: Arial;">java</span><span style="font-size: 12pt; font-family: 宋体;">文g?/span><span style="font-size: 12pt; font-family: Arial;">java</span><span style="font-size: 12pt; font-family: 宋体;">源码~译后的</span><span style="font-size: 12pt; font-family: Arial;">class</span><span style="font-size: 12pt; font-family: 宋体;">文gQ塞到指定的</span><span style="font-size: 12pt; font-family: Arial;">jar</span><span style="font-size: 12pt; font-family: 宋体;">文g中?/span></p><p><br /><span style="font-size: 12pt; font-family: 宋体;"></span></p><p><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">q行方式Q?/span></strong></p> <p><span style="font-size: 12pt;">1</span><span style="font-size: 12pt; font-family: 宋体;">、用文本~辑器打开</span><span style="font-size: 12pt;">aj.sh</span><span style="font-size: 12pt; font-family: 宋体;">?/span><span style="font-size: 12pt;">aj24.sh,</span><span style="font-size: 12pt; font-family: 宋体;">更改以下几个变量Q?/span></p> <p><strong><span style="font-weight: bold; font-size: 12pt; color: red;">jar_file  </span></strong><span style="font-size: 12pt; font-family: 宋体;">指定</span><span style="font-size: 12pt;">jar</span><span style="font-size: 12pt; font-family: 宋体;">文g的完整\径(注意路径分隔W一律用</span><span style="font-size: 12pt;">’<span style="color: red;">/</span>’</span><span style="font-size: 12pt; font-family: 宋体;">Q?/span></p> <p><strong><span style="font-weight: bold; font-size: 12pt; color: red;">bin_dir   </span></strong><span style="font-size: 12pt; font-family: 宋体;">指定</span><span style="font-size: 12pt;">class</span><span style="font-size: 12pt; font-family: 宋体;">所在的</span><span style="font-size: 12pt;">bin</span><span style="font-size: 12pt; font-family: 宋体;">完整路径</span></p> <p><strong><span style="font-weight: bold; font-size: 12pt; color: red;">src_dir   </span></strong><span style="font-size: 12pt; font-family: 宋体;">指定源码所在的</span><span style="font-size: 12pt;">src</span><span style="font-size: 12pt; font-family: 宋体;">完整路径</span></p> <p><span style="font-size: 12pt;">2</span><span style="font-size: 12pt; font-family: 宋体;">、打开</span><span style="font-size: 12pt;">cygwin</span><span style="font-size: 12pt; font-family: 宋体;">Q进入脚本文件所在的目录Q运行如下命令:</span></p> <p><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: Arial;">sh aj.sh</span></strong></p> <p><span style="font-size: 12pt; font-family: 宋体;">?/span></p> <p><strong><span style="font-weight: bold; font-size: 12pt; background: none repeat scroll 0% 0% #ffcc00; font-family: Arial;">sh aj24.sh</span></strong></p> <p> </p> <p><strong><span style="font-weight: bold; font-size: 12pt;">ps</span></strong><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">Q?/span></strong></p> <p><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">指定</span></strong><strong><span style="font-weight: bold; font-size: 12pt;">cygwin</span></strong><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">打开时的默认路径Q?/span></strong></p> <p><span style="font-size: 12pt; font-family: 宋体;">新徏一个环境变?/span><strong><span style="font-weight: bold; font-size: 12pt;">HOME</span></strong><span style="font-size: 12pt; font-family: 宋体;">Q设|ؓ脚本文g所在的目录?/span></p> <p><span style="font-size: 12pt; font-family: 宋体;">q样可以更加方便、快速地q行脚本?/span></p> <p><span style="font-size: 12pt; font-family: 宋体;">路径<strong><span style="font-weight: bold; color: red;">分割W用‘</span></strong></span><strong><span style="font-weight: bold; font-size: 12pt; color: red;">/</span></strong><strong><span style="font-weight: bold; font-size: 12pt; color: red; font-family: 宋体;">’</span></strong><span style="font-size: 12pt;">,</span><span style="font-size: 12pt; font-family: 宋体;">盘W用</span><span style="font-size: 12pt;">cygdrive</span><span style="font-size: 12pt; font-family: 宋体;">表示?/span><span style="font-size: 12pt;">eg</span><span style="font-size: 12pt; font-family: 宋体;">Q?/span><span style="font-size: 12pt;"> <span>d:\shell      </span></span><span style="font-size: 12pt; font-family: 宋体;">——?/span><span style="font-size: 12pt;">    /cygdrive/d/shell</span></p> <p><br /><span style="font-size: 10pt;"></span></p><p><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">环境依赖Q?/span></strong></p> <p><span style="font-size: 12pt;">JDK/JRE</span></p> <p><span style="font-size: 12pt;">Cygwin</span></p> <p><strong><span style="font-weight: bold; font-size: 12pt;">cywin</span></strong><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">安装</span></strong><span style="font-size: 12pt; font-family: 宋体;">Q进入下载页</span><span style="font-size: 12pt;"><a title="blocked::http://cygwin.com/install.html" >http://cygwin.com/install.html</a></span><span style="font-size: 12pt; font-family: 宋体;">Q将“</span><strong><span style="font-weight: bold; font-size: 12pt;">setup.exe</span></strong><span style="font-size: 12pt; font-family: 宋体;">”下蝲到本地运行,</span><span style="font-size: 12pt; font-family: 宋体;">一路默认即可?/span></p> <p><span style="font-size: 12pt; font-family: 宋体;">安装参考文档:</span><span style="font-size: 12pt;"><a title="blocked::http://goo.gl/eXfzx" >http://goo.gl/eXfzx</a></span></p> <p><a target="_blank" >cygwin常用命o及find命o说明 </a></p><div></div><p> </p><p><br /></p> <p><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">~陷Q?/span></strong></p> <p style="background: none repeat scroll 0% 0% #ffcc00; margin-left: 36pt; text-indent: -36pt;"><span style="font-size: 12pt;"><span>1?span style="font: 7pt 'Times New Roman';">            </span></span></span><span style="font-size: 12pt; font-family: 宋体;">如果你修改的?strong><span style="font-weight: bold;">需要{义的中文资源文g</span></strong>Q需要自己去转义后再覆盖q去?/span></p> <p style="background: none repeat scroll 0% 0% #ffcc00; margin-left: 36pt; text-indent: -36pt;"><span style="font-size: 12pt;"><span>2?span style="font: 7pt 'Times New Roman';">            </span></span></span><span style="font-size: 12pt; font-family: 宋体;">如果你修改的?/span><strong><span style="font-weight: bold; font-size: 12pt;">java</span></strong><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">文g中的非内部类</span></strong><span style="font-size: 12pt; font-family: 宋体;">Q也需要手动去扑ֈ?/span><span style="font-size: 12pt;">class</span><span style="font-size: 12pt; font-family: 宋体;">c,再塞?/span><span style="font-size: 12pt;">jar</span><span style="font-size: 12pt; font-family: 宋体;">文g厅R?/span></p> <p> </p><p> </p><div><strong><span style="font-weight: bold; font-size: 12pt; font-family: 宋体;">脚本文gQ?/span></strong></div><p> </p><p>aj.sh Q将W?6行注释掉Q第17行去掉注释,即ؓ“aj24.sh”Q?br /></p><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080;"> 1</span> <span style="color: #008000;">#</span><span style="color: #008000;">!/bin/sh<br /></span><span style="color: #008080;"> 2</span> <span style="color: #008000;"># Auto zip the files which are checked out or modified to the target jar file.<br /></span><span style="color: #008080;"> 3</span> <span style="color: #008000;"><br /></span><span style="color: #008080;"> 4</span> <span style="color: #008000;"># Note: use '/' as separator in directory<br /></span><span style="color: #008080;"> 5</span> <span style="color: #008000;"># target jar file</span><span style="color: #008000;"><br /></span><span style="color: #008080;"> 6</span> <span style="color: #008000;"></span><span style="color: #000000;">jar_file</span><span style="color: #000000;">=</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">G:/demo.jar</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"><br /></span><span style="color: #008080;"> 7</span> <span style="color: #000000;"><br /></span><span style="color: #008080;"> 8</span> <span style="color: #000000;"><br /></span><span style="color: #008080;"> 9</span> <span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;"> bin directory of compiled class files</span><span style="color: #008000;"><br /></span><span style="color: #008080;">10</span> <span style="color: #008000;"></span><span style="color: #000000;">bin_dir</span><span style="color: #000000;">=</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">D:/workspace/demo/bin</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"><br /></span><span style="color: #008080;">11</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">12</span> <span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;"> src directory of source files</span><span style="color: #008000;"><br /></span><span style="color: #008080;">13</span> <span style="color: #008000;"></span><span style="color: #000000;">src_dir</span><span style="color: #000000;">=</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">D:/workspace/demo/src</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"><br /></span><span style="color: #008080;">14</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">15</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">16</span> <span style="color: #000000;">condition</span><span style="color: #000000;">=</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">-perm 644</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"><br /></span><span style="color: #008080;">17</span> <span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;">condition=' -mtime 0'</span><span style="color: #008000;"><br /></span><span style="color: #008080;">18</span> <span style="color: #008000;"></span><span style="color: #000000;">c_j</span><span style="color: #000000;">=</span><span style="color: #800000;">0</span><span style="color: #000000;"><br /></span><span style="color: #008080;">19</span> <span style="color: #000000;">c_nj</span><span style="color: #000000;">=</span><span style="color: #800000;">0</span><span style="color: #000000;"><br /></span><span style="color: #008080;">20</span> <span style="color: #000000;">c_c</span><span style="color: #000000;">=</span><span style="color: #800000;">0</span><span style="color: #000000;"><br /></span><span style="color: #008080;">21</span> <span style="color: #000000;">function count_javaFiles<br /></span><span style="color: #008080;">22</span> <span style="color: #000000;">{<br /></span><span style="color: #008080;">23</span> <span style="color: #000000;">    let </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">c_j=$c_j + 1</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">24</span> <span style="color: #000000;">}<br /></span><span style="color: #008080;">25</span> <span style="color: #000000;">function count_nonJavaFiles<br /></span><span style="color: #008080;">26</span> <span style="color: #000000;">{<br /></span><span style="color: #008080;">27</span> <span style="color: #000000;">    let </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">c_nj=$c_nj + 1</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">28</span> <span style="color: #000000;">}<br /></span><span style="color: #008080;">29</span> <span style="color: #000000;">function count_classFiles<br /></span><span style="color: #008080;">30</span> <span style="color: #000000;">{<br /></span><span style="color: #008080;">31</span> <span style="color: #000000;">    let </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">c_c=$c_c + 1</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">32</span> <span style="color: #000000;">}<br /></span><span style="color: #008080;">33</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">34</span> <span style="color: #000000;">function inspectZip<br /></span><span style="color: #008080;">35</span> <span style="color: #000000;">{<br /></span><span style="color: #008080;">36</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">local</span><span style="color: #000000;"> fileName</span><span style="color: #000000;">=</span><span style="color: #000000;">$</span><span style="color: #800000;">1</span><span style="color: #000000;"><br /></span><span style="color: #008080;">37</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">local</span><span style="color: #000000;"> dir_pre</span><span style="color: #000000;">=</span><span style="color: #000000;">$</span><span style="color: #800000;">2</span><span style="color: #000000;"><br /></span><span style="color: #008080;">38</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">local</span><span style="color: #000000;"> line<br /></span><span style="color: #008080;">39</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">local</span><span style="color: #000000;"> list<br /></span><span style="color: #008080;">40</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">local</span><span style="color: #000000;"> myDir_pre<br /></span><span style="color: #008080;">41</span> <span style="color: #000000;">    cd </span><span style="color: #800080;">$bin_dir</span><span style="color: #000000;"><br /></span><span style="color: #008080;">42</span> <span style="color: #000000;">    list</span><span style="color: #000000;">=</span><span style="color: #000000;">` find </span><span style="color: #000000;">.</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">${fileName}[$.]*class</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"> `<br /></span><span style="color: #008080;">43</span> <span style="color: #000000;">        <br /></span><span style="color: #008080;">44</span> <span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;"> line in </span><span style="color: #800080;">$list</span><span style="color: #000000;"><br /></span><span style="color: #008080;">45</span> <span style="color: #000000;"></span><span style="color: #0000ff;">do</span><span style="color: #000000;"><br /></span><span style="color: #008080;">46</span> <span style="color: #000000;">    myDir_pre</span><span style="color: #000000;">=</span><span style="color: #000000;">${line</span><span style="color: #000000;">%/*</span><span style="color: #000000;">}<br /></span><span style="color: #008080;">47</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> [ </span><span style="color: #800080;">$myDir_pre</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">$dir_pre</span><span style="color: #000000;"> ]<br /></span><span style="color: #008080;">48</span> <span style="color: #000000;">    then<br /></span><span style="color: #008080;">49</span> <span style="color: #000000;">        jar </span><span style="color: #000000;">-</span><span style="color: #000000;">uvf </span><span style="color: #800080;">$jar_file</span><span style="color: #000000;"> </span><span style="color: #800080;">$line</span><span style="color: #000000;"><br /></span><span style="color: #008080;">50</span> <span style="color: #000000;">        count_classFiles<br /></span><span style="color: #008080;">51</span> <span style="color: #000000;">    fi<br /></span><span style="color: #008080;">52</span> <span style="color: #000000;">done<br /></span><span style="color: #008080;">53</span> <span style="color: #000000;">}<br /></span><span style="color: #008080;">54</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">55</span> <span style="color: #000000;">function easyZip<br /></span><span style="color: #008080;">56</span> <span style="color: #000000;">{<br /></span><span style="color: #008080;">57</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">local</span><span style="color: #000000;"> file</span><span style="color: #000000;">=</span><span style="color: #000000;">$</span><span style="color: #800000;">1</span><span style="color: #000000;"><br /></span><span style="color: #008080;">58</span> <span style="color: #000000;">    jar </span><span style="color: #000000;">-</span><span style="color: #000000;">uvf </span><span style="color: #800080;">$jar_file</span><span style="color: #000000;"> </span><span style="color: #800080;">$file</span><span style="color: #000000;"><br /></span><span style="color: #008080;">59</span> <span style="color: #000000;">    count_nonJavaFiles<br /></span><span style="color: #008080;">60</span> <span style="color: #000000;">}<br /></span><span style="color: #008080;">61</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">62</span> <span style="color: #000000;">cd </span><span style="color: #800080;">$src_dir</span><span style="color: #000000;"><br /></span><span style="color: #008080;">63</span> <span style="color: #000000;">list</span><span style="color: #000000;">=</span><span style="color: #000000;">`find </span><span style="color: #000000;">.</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">type f </span><span style="color: #800080;">$condition</span><span style="color: #000000;"> </span><span style="color: #000000;">!</span><span style="color: #000000;"> </span><span style="color: #000000;">\</span><span style="color: #000000;">( </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">*.java</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">o </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">*.keep</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">o </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">*.keep.[0-9]*</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">o </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">*.contrib</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">o </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">*.contrib.[0-9]*</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"> </span><span style="color: #000000;">\</span><span style="color: #000000;">)`<br /></span><span style="color: #008080;">64</span> <span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;"> line in </span><span style="color: #800080;">$list</span><span style="color: #000000;"><br /></span><span style="color: #008080;">65</span> <span style="color: #000000;"></span><span style="color: #0000ff;">do</span><span style="color: #000000;"><br /></span><span style="color: #008080;">66</span> <span style="color: #000000;">    easyZip </span><span style="color: #800080;">$line</span><span style="color: #000000;"><br /></span><span style="color: #008080;">67</span> <span style="color: #000000;">done<br /></span><span style="color: #008080;">68</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">69</span> <span style="color: #000000;">list</span><span style="color: #000000;">=</span><span style="color: #000000;">`find </span><span style="color: #000000;">.</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">type f </span><span style="color: #800080;">$condition</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">name </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">*.java</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;"> `<br /></span><span style="color: #008080;">70</span> <span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;"> line in </span><span style="color: #800080;">$list</span><span style="color: #000000;"><br /></span><span style="color: #008080;">71</span> <span style="color: #000000;"></span><span style="color: #0000ff;">do</span><span style="color: #000000;"><br /></span><span style="color: #008080;">72</span> <span style="color: #000000;">    dir_pre</span><span style="color: #000000;">=</span><span style="color: #000000;">${line</span><span style="color: #000000;">%/*</span><span style="color: #000000;">}<br /></span><span style="color: #008080;">73</span> <span style="color: #000000;">    fileName</span><span style="color: #000000;">=</span><span style="color: #000000;">`echo ${line</span><span style="color: #008000;">#</span><span style="color: #008000;">#*/} | cut -d '.' -f1`</span><span style="color: #008000;"><br /></span><span style="color: #008080;">74</span> <span style="color: #008000;"></span><span style="color: #000000;">    <br /></span><span style="color: #008080;">75</span> <span style="color: #000000;">    inspectZip </span><span style="color: #800080;">$fileName</span><span style="color: #000000;"> </span><span style="color: #800080;">$dir_pre</span><span style="color: #000000;"><br /></span><span style="color: #008080;">76</span> <span style="color: #000000;">    count_javaFiles<br /></span><span style="color: #008080;">77</span> <span style="color: #000000;">done<br /></span><span style="color: #008080;">78</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">79</span> <span style="color: #000000;"><br /></span><span style="color: #008080;">80</span> <span style="color: #000000;">echo </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">non-java files: $c_nj</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">81</span> <span style="color: #000000;">echo </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">java files: $c_j</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">82</span> <span style="color: #000000;">echo </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">class files: $c_c</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">83</span> <span style="color: #000000;">echo </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">total files:  $[$c_nj + $c_c]</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;"><br /></span><span style="color: #008080;">84</span> <span style="color: #000000;"></span></div><img src ="http://www.tkk7.com/Man/aggbug/351583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Man/" target="_blank">此号已被?/a> 2011-06-02 11:52 <a href="http://www.tkk7.com/Man/archive/2011/06/02/351583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://286513.com" target="_blank">ѵĻɫҳѹۿ</a>| <a href="http://cxljdz.com" target="_blank">ѿƬ</a>| <a href="http://www-135888.com" target="_blank">ĻӰӾþþ</a>| <a href="http://w6336.com" target="_blank">޴ɫ߹ۿ</a>| <a href="http://82nnn.com" target="_blank">ۺϾþϵ</a>| <a href="http://mmstom.com" target="_blank">ҹƵվ</a>| <a href="http://513573.com" target="_blank">߹ۿɫƬƵ</a>| <a href="http://by3142.com" target="_blank">99Ƶ߾Ʒ</a>| <a href="http://gzmkqp.com" target="_blank">avƬ쿴</a>| <a href="http://jinluffcl.com" target="_blank">Ƶһ</a>| <a href="http://fsszx888.com" target="_blank">Ļһ</a>| <a href="http://rhacu.com" target="_blank">޾Ʒͼ</a>| <a href="http://www398ph.com" target="_blank">޹ᆱƷԲ߹ۿ</a>| <a href="http://ttvv77.com" target="_blank">԰߹ۿ޻ɫһƬ </a>| <a href="http://taoh2517.com" target="_blank">һƵѹۿ</a>| <a href="http://fense1.com" target="_blank">ޱר</a>| <a href="http://mhysf.com" target="_blank">޹˾ƷӰ</a>| <a href="http://adcbgy.com" target="_blank">޹þ</a>| <a href="http://qestest.com" target="_blank">޾Ʒ߳ˮ</a>| <a href="http://wwwkk5679.com" target="_blank">޾Ʒһþ</a>| <a href="http://hbwhgd.com" target="_blank">ѹۿһëƬa</a>| <a href="http://15nw.com" target="_blank">Ů18Ƶ</a>| <a href="http://ebhqd.com" target="_blank">Ƭѿ</a>| <a href="http://jsky163.com" target="_blank">߿Ƭ</a>| <a href="http://wwwbu610.com" target="_blank">57paoƵ</a>| <a href="http://dazngt.com" target="_blank">պƷϵר</a>| <a href="http://66cws.com" target="_blank">վѴȫպ</a>| <a href="http://7299jj.com" target="_blank">ëƬѹۿȫ</a>| <a href="http://71caoxee.com" target="_blank">һaƬþëƬѿ</a>| <a href="http://8mav950.com" target="_blank">ѹۿĻƷ</a>| <a href="http://www-456446.com" target="_blank">Ѹ߹ۿ</a>| <a href="http://t66p.com" target="_blank">һëƬ붯ѹۿ</a>| <a href="http://qinglou31.com" target="_blank">ѿһ߳ëƬ</a>| <a href="http://959901cc.com" target="_blank">һaƬþëƬ</a>| <a href="http://dxjz120.com" target="_blank">վ߹ۿ</a>| <a href="http://gyjinzheng.com" target="_blank">Ůѹۿվ</a>| <a href="http://njbyz.com" target="_blank">Ƶһ</a>| <a href="http://aiwoqi.com" target="_blank">ƵѲ</a>| <a href="http://aa77cc.com" target="_blank">777777</a>| <a href="http://class3g.com" target="_blank">һng</a>| <a href="http://gysysz.com" target="_blank">ձ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>