GNU工具箱[转]

GNU工具箱 作者: 车东 发表于:2003-07-06 17:07 最后更新于:2007-04-12 11:04
版权声明:可以任意转载,转载时请务必以超链接形式标明文章 原始出处和作者信息及 本声明。
http://www.chedong.com/tech/gnu.html

内容摘要:
GNU很推崇“工具箱”哲学:很多复杂的问题都可以通过几个更简单的工具通过一定的组合加以解决的。

  • 编辑器:vi pico
  • 行处理:awk sed perl grep sort uniq
  • 下载/解包:wget tar gzip

shell 脚本本身的一些变量: $_ shell环境名称 如 /bin/sh ; $0 shell脚本本身,如 test.sh ; $1 $2 ..$9 命令行参数 test.sh -a -b 的$1 = -a $2 = -b

编辑器:VI pico emacs

vi中显示行号: :set nu
去文件尾部:G
去行尾 $
添加 i a
删除 x

脚本和行文字处理

给文件批量加前缀:
先用awk生成命令列表:
ls -1 *|awk '{print "uniq -c "$1" pre_"$1"|sort -rn"}' > batch_rename.sh

然后执行生成的脚本:
sh batch_rename.sh

我的每月访问TOP10 统计脚本:
awk -F '\t' '{print $4}' 2004_2.txt| grep chedong.com/tech/|sort |uniq -c|sort -rn|head -10
awk -F '\t' 用TAB分割;
grep chedong.com/tech 只列出笔记目录下的文档;
sort 排序
uniq -c 汇总计数
sort -rn 按数值排序
head -10 TOP 10

我的每月来源TOP10统计脚本:
grep --binary-files=text chedong.com 2004_2.txt |awk -F '\t' '{print $3}'| awk -F '/' '{print "http://"$3}'|grep -v chedong.com|sort|uniq -c |sort -rn|head -10
grep --binary-files=text 强制按text文本处理
awk -F '\t' 用TAB分割;
awk -F '/' 获得域名;
grep -v chedong.com 排除自身网站;
sort 排序
uniq -c 汇总计数
sort -rn 按数值排序
head -10 TOP 10

grep 打印上下文5行
grep -A 5 -B 5 sometext my.file

去掉#开头的注释,如:apache的httpd.conf
grep -v "#" filename

打印大文档中的某一行:
sed -n 1234p access_log

将每4行数据变成一行
pr -a -J -T --columns=4 source.log
-a 横向输出
-J 合并成行
-T 忽略页头和页尾
--columns=4 每4个单元一次

已一些��蔚睦�子,解�f sed 的使用
最後,�列出 sed 的 manual page

---------------------------------------------------------------
1. �� filename �n案�鹊� Giga 字串取代成 GigaRama
    
   sed s/Giga/GigaRama/ filename

---------------------------------------------------------------
2. �� filename �n案�鹊� xfish 字串那一行�h除

   sed /xfish/d filename

---------------------------------------------------------------
3. 指定哪一行,�⒅��h除

   sed '4d' filename

---------------------------------------------------------------
4. 或指定第一行到第�仔校��⒅��h除

   sed '1,4d' filename

---------------------------------------------------------------
5. �⒌谝恍械降谖逍杏〕�

   sed -n 1,5p filename

---------------------------------------------------------------
6. �� file �n案�鹊某霈F xfish 字串的那一行�为���到 file2 ��

   sed -n '/xfish/w file2' file

---------------------------------------------------------------
7. �f用字元的使用,�� file �n案�鹊� xfis? 哪一行��到 file2 ��

   sed '/xfis./w file2' file

---------------------------------------------------------------
8. �f用字串的使用,�� file �n案�鹊� xfis* 哪一行��到 file2 ��

   sed '/xfis*/w file2' file

---------------------------------------------------------------
9. �x定字元的使用,�� file �n案�鹊� xfis[abcd] 哪一行��到 file2 ��

   sed '/xfis[abcd]/w file2' file

---------------------------------------------------------------
10. 特�e符�的取消,利用 /

    sed s/\<title\>/\<TITLE\>/ file

---------------------------------------------------------------
11. 一行的起�^的取代,�� file �n案的每一行起�^都加上 Hi..

    sed s/^/Hi.. / file

---------------------------------------------------------------
12. 一行的�Y尾的取代,�� file �n案的每一行�Y尾都加上 Hi..

    sed s/$/Hi.. / file

---------------------------------------------------------------
13. 多重�l件的指定,利用 -e �x�

    sed -e 's/Giga/GigaRama/' -e 's/^/Hi../' file

---------------------------------------------------------------

下载解包:wget tar gz

wget -P output_dir --cut-dirs=1 -nH -m ftp://username:[email protected]:21/dir1/dir2/

选项说明:
-P 指定输出目录名
--cut-dirs=2 不创建目录层次 dir1/dir2/
-nH 不创建域名目录:123.123.123.123/
-m 镜像

例子:
wget -P backup --cut-dir=1 -nH ftp://myname:[email protected]:21/tech/

打包:使用GZ
tar czf house.tgz house
解包:使用gz
tar xzf house.tgz
打包:使用bz2
tar cjf house.tbz2 house
解包:使用bz2
tar zjf house.tbz2

ssh -p 12345 [email protected]
sftp -oPort=12345 [email protected]

对开源软件的印象:开源社区很像一个基于互联网的原始丛林,那些经过近乎“物竞天择”式的发展并能够长期留存下来的工具/开发库往往都是非常“强 壮”的,GNU这些工具包的高效稳定给我留下了深刻印象,而且由于很多开源软件都来自资深工程师的实践,实际上可重用度也很高。如果从生态的角度来解释的 话,开源软件生存下去比同类商资软所需要的件要少。多

你可能感兴趣的:(#linux下的软件推荐)