GNU工具箱
2008-10-19 19:30
344 查看
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个单元一次
已一些簡單的例子,解說 sed 的使用
最後,還列出 sed 的 manual page
---------------------------------------------------------------
1. 將 filename 檔案內的 Giga 字串取代成 GigaRama
sed s/Giga/GigaRama/ filename
---------------------------------------------------------------
2. 將 filename 檔案內的 xfish 字串那一行刪除
sed /xfish/d filename
---------------------------------------------------------------
3. 指定哪一行,將之刪除
sed '4d' filename
---------------------------------------------------------------
4. 或指定第一行到第幾行,將之刪除
sed '1,4d' filename
---------------------------------------------------------------
5. 將第一行到第五行印出
sed -n 1,5p filename
---------------------------------------------------------------
6. 將 file 檔案內的出現 xfish 字串的那一行單獨寫到 file2 內
sed -n '/xfish/w file2' file
---------------------------------------------------------------
7. 萬用字元的使用,將 file 檔案內的 xfis? 哪一行寫到 file2 內
sed '/xfis./w file2' file
---------------------------------------------------------------
8. 萬用字串的使用,將 file 檔案內的 xfis* 哪一行寫到 file2 內
sed '/xfis*/w file2' file
---------------------------------------------------------------
9. 選定字元的使用,將 file 檔案內的 xfis[abcd] 哪一行寫到 file2 內
sed '/xfis[abcd]/w file2' file
---------------------------------------------------------------
10. 特別符號的取消,利用 /
sed s/\<title\>/\<TITLE\>/ file
---------------------------------------------------------------
11. 一行的起頭的取代,將 file 檔案的每一行起頭都加上 Hi..
sed s/^/Hi.. / file
---------------------------------------------------------------
12. 一行的結尾的取代,將 file 檔案的每一行結尾都加上 Hi..
sed s/$/Hi.. / file
---------------------------------------------------------------
13. 多重條件的指定,利用 -e 選項
sed -e 's/Giga/GigaRama/' -e 's/^/Hi../' file
---------------------------------------------------------------
下载解包:wget tar gz
wget -P output_dir --cut-dirs=1 -nH -m ftp://username:password@123.123.123.123/dir1/dir2/
选项说明:
-P 指定输出目录名
--cut-dirs=2 不创建目录层次 dir1/dir2/
-nH 不创建域名目录:123.123.123.123/
-m 镜像
例子:
wget -P backup --cut-dir=1 -nH www.chedong.com/tech/" target=_blank>ftp://myname:mypass@www.chedong.com/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]username@hostname.com[/email]
sftp -oPort=12345 [email]username@hostname.com[/email]
文章引用自:http://www.chedong.com/tech/gnu.html
编辑器: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个单元一次
已一些簡單的例子,解說 sed 的使用
最後,還列出 sed 的 manual page
---------------------------------------------------------------
1. 將 filename 檔案內的 Giga 字串取代成 GigaRama
sed s/Giga/GigaRama/ filename
---------------------------------------------------------------
2. 將 filename 檔案內的 xfish 字串那一行刪除
sed /xfish/d filename
---------------------------------------------------------------
3. 指定哪一行,將之刪除
sed '4d' filename
---------------------------------------------------------------
4. 或指定第一行到第幾行,將之刪除
sed '1,4d' filename
---------------------------------------------------------------
5. 將第一行到第五行印出
sed -n 1,5p filename
---------------------------------------------------------------
6. 將 file 檔案內的出現 xfish 字串的那一行單獨寫到 file2 內
sed -n '/xfish/w file2' file
---------------------------------------------------------------
7. 萬用字元的使用,將 file 檔案內的 xfis? 哪一行寫到 file2 內
sed '/xfis./w file2' file
---------------------------------------------------------------
8. 萬用字串的使用,將 file 檔案內的 xfis* 哪一行寫到 file2 內
sed '/xfis*/w file2' file
---------------------------------------------------------------
9. 選定字元的使用,將 file 檔案內的 xfis[abcd] 哪一行寫到 file2 內
sed '/xfis[abcd]/w file2' file
---------------------------------------------------------------
10. 特別符號的取消,利用 /
sed s/\<title\>/\<TITLE\>/ file
---------------------------------------------------------------
11. 一行的起頭的取代,將 file 檔案的每一行起頭都加上 Hi..
sed s/^/Hi.. / file
---------------------------------------------------------------
12. 一行的結尾的取代,將 file 檔案的每一行結尾都加上 Hi..
sed s/$/Hi.. / file
---------------------------------------------------------------
13. 多重條件的指定,利用 -e 選項
sed -e 's/Giga/GigaRama/' -e 's/^/Hi../' file
---------------------------------------------------------------
下载解包:wget tar gz
wget -P output_dir --cut-dirs=1 -nH -m ftp://username:password@123.123.123.123/dir1/dir2/
选项说明:
-P 指定输出目录名
--cut-dirs=2 不创建目录层次 dir1/dir2/
-nH 不创建域名目录:123.123.123.123/
-m 镜像
例子:
wget -P backup --cut-dir=1 -nH www.chedong.com/tech/" target=_blank>ftp://myname:mypass@www.chedong.com/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]username@hostname.com[/email]
sftp -oPort=12345 [email]username@hostname.com[/email]
文章引用自:http://www.chedong.com/tech/gnu.html
相关文章推荐
- GNU工具箱
- GNU工具箱[转]
- 【人在运维囧途_07】GNU/Linux 系统资源监控神器--collectl【重点推荐】
- GSL--GNU Scientific Library
- 源码阅读利器-GNU GLOBAL Source Code Tag System
- 迎接我国第一款GNU操作系统的诞生
- [Linux]GNU自动化工具(automake工具链)
- 英国GNU自由软件的斗士:Michael Meeks
- GNU&nbsp;ARM汇编中的.word
- 文件目录IBM的LPI复习资料之LPI101-Topic103 :GNU和Unix命令(3)文件和目录管理
- GNU ARM汇编--(五)中断汇编之嵌套中断处理
- 百万级PHP网站架构工具箱
- 在matlab上使用libsvm工具箱使用错误及解决方法汇总
- rlwrap安装报错 You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build this program
- 如何在matlab中添加SVM工具箱以及初次应用
- MIT/GNU Scheme用户手册(三)
- MIT/GNU Scheme用户手册(四)
- GNU gcc 和 g++ 的区别详解
- GNU-ld链接脚本浅析 .
- The GNU Manifesto