- 浏览: 435040 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (144)
- java (32)
- Flex (11)
- linux (15)
- 思维至上 (2)
- 生活 (4)
- spring2.5.5 (3)
- Design pattern (0)
- jdk1.6 (1)
- erlang (14)
- mysql (5)
- nginx (10)
- 互联网 (1)
- 用户体验 (0)
- jvm (8)
- hibernate (0)
- oracle (0)
- mvn (2)
- 23种常用设计模式详细讲解及实例 (1)
- nosql (1)
- mongodb (2)
- thrift (1)
- 负载均衡 (1)
- Objective-c (1)
- fuck (1)
- resin (3)
- log4j (2)
- android (1)
- jps (0)
- lucene (2)
- rsync (1)
- python (1)
- java性能分析 (1)
- spring (1)
- zookeeper (2)
- error (1)
- 算法 (1)
- hudson (1)
- svn (1)
- maven (1)
- svn server (2)
- swap linux (1)
- 协同过滤 (1)
- 邮件系统 (1)
最新评论
-
cheetah747:
我也遇到这个问题了,不过我是直接把第三方jar放到工程文件的l ...
JAVA NoClassDefFoundError: -
dxm1986:
hillfallshore 写道亲 你这是杜撰的小说吗?完全是 ...
面试有感 -
dxm1986:
mengda1027 写道从实习生到高级java到架构师,是在 ...
面试有感 -
dxm1986:
kljjack 写道一个编程十几年,每年看几十本技术书籍,技术 ...
面试有感 -
dxm1986:
轻指飞扬 写道呵呵,挺好玩的~ 我怎么感觉你招人不是很有诚意嘛 ...
面试有感
linux学习--sed,sort,uniq,join,cut,paste,split
linux学习--sed,sort,uniq,join,cut,paste,split
==============================sed==========================
1、调用sed
调用s e d有三种方式:在命令行键入命令;将s e d命令插入脚本文件,然后调用s e d;将s e d
命令插入脚本文件,并使s e d脚本可执行。
使用s e d命令行格式为:
sed [选项] s e d命令 输入文件。
记住在命令行使用s e d命令时,实际命令要加单引号。s e d也允许加双引号
使用s e d脚本文件,格式为:
sed [选项] -f sed脚本文件输入文件
要使用第一行具有s e d命令解释器的s e d脚本文件,其格式为
sed脚本文件 [选项] 输入文件
sed选项如下:
n 不打印;s e d不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以
用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条s e d命令,
此选项无用,但指定它也没有关系。
f 如果正在调用s e d脚本文件,使用此选项。此选项通知s e d一个脚本文件支持所有的s e d
命令,例如:sed -f myscript.sed input_file,这里m y s c r i p t . s e d即为支持s e d命令的文件。
2、使用sed在文件中查询文本的方式
s e d浏览输入文件时,缺省从第一行开始,有两种方式定位文本:
1) 使用行号,可以是一个简单数字,或是一个行号范围。
2) 使用正则表达式
使用s e d在文件中定位文本的方式
x x为一行号,如1
x , y 表示行号范围从x到y,如2,5表示从第2行到第5行
/ p a t t e r n / 查询包含模式的行。例如/ d i s k /或/[a-z]/
/ p a t t e r n / p a t t e r n / 查询包含两个模式的行。例如/ d i s k / d i s k s /
p a t t e r n / , x 在给定行号上查询包含模式的行。如/ r i b b o n / , 3
x , / p a t t e r n / 通过行号和模式查询匹配行。3 . / v d u /
x , y ! 查询不包含指定行号x和y的行。1 , 2 !
3、基本sed编辑命令
sed编辑命令
p 打印匹配行
= 显示文件行号
a \ 在定位行号后附加新文本信息
i \ 在定位行号后插入新文本信息
d 删除定位行
c \ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制A S C I I代码等价的控制字符
{ } 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的
4、sed和正则表达式
sed识别任何基本正则表达式和模式及其行匹配规则
5、基本sed编程举例
使用p(rint)显示行:
p r i n t命令格式为[ a d d r e s s [,a d d r e s s ] P。显示文本行必须提供s e d命令行号。
sed -n '2p' quote.txt
显示从2到4行
sed -n '2,4p' url_access_detail.txt
打印模式:
sed -n '/1028f/p' url_access_detail.txt
sed -n '/\/\?1028f/p' url_access_detail.txt
使用模式和行号进行查询:
只在第4行查询
sed -n '4,/\/\?1028f/'p url_access_detail.txt
显示整个文件:
只需将行范围设为第一行到最后一行1 , $。$意为最后一行:
sed -n '1,$p' quote.txt
任意字符:
匹配任意字母,后跟任意字母的0次或多次重复,并以i n g结尾,模式为/ . * i n g /。可以使用
这个模式查询以i n g结尾的任意单词
sed -n '/.*ing/'p quote.txt
打印行号:
要打印行号,使用等号=。打印模式匹配的行号,使用格式/pattern/=。
sed -e '/music/=' quote.txt
(不过这些好像在linux里面不支持)
附加文本:
sed -n '/1028f/'p url_access_detail.txt |sed '/h/ a\then haha'
在前面添加,用i\
替换,用c\
删除,用d\
6、替换文本
替换命令用替换模式替换指定模式,格式为:
[ a d d r e s s [,address]] s/ pattern-to-find /replacement-pattern/[g p w n]
s选项通知s e d这是一个替换操作,并查询p a t t e r n - t o - f i n d,成功后用r e p l a c e m e n t - p a t t e r n替
换它。
g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出
结果。
w 文件名使用此选项将输出定向到一个文件。
sed 's/haha/hehe/g w a.out' quote.txt
使用替换修改字符串:
如果要附加或修改一个字符串,可以使用( &)命令,&命令保存发现模式以便重新调用
它,然后把它放在替换字符串里面。这里给出一个修改的设计思路。先给出一个被替换模式,
然后是一个准备附加在第一个模式后的另一个模式,并且后面带有&,这样修改模式将放在
匹配模式之前。例如, s e d语句s/nurse/"Hello"&/p 的结果如下
sed 's/nurse/"Hello" &/p' quote.txt
比如原来的句子为: The nurse come from china.
替换后的句子为: The "Hello" nurse come from china.
7、从文件中读文本
处理文件时, s e d允许从另一个文件中读文本,并将其文本附加在当前文件。此命令放在
模式匹配行后,格式为:address r filename
sed '/companty/r append.txt' quote.txt
8、显示文件中的控制字符
s e d格式为:
[ a d d r e s s,[ a d d r e s s ] ] l
sed '1,$1' quote.txt
(linux 不支持)
9、处理报文输出
比如有如下输出:
Database Size DateCreated
----------------------------
newlog 2289 12/11/2005
mysql 1909 09/12/2005
(2 row affected)
为了使用上述输出信息做进一步自动处理,需要知道所存数据库名称,为此需执行以下操作:
1) 使用s / - * / / g删除横线- - - - - -。
2) 使用/ ^ $ / d删除空行。
3) 使用$ d删除最后一行
4) 使用1 d删除第一行。
5) 使用awk {print $1}打印第一列。
命令如下,这里使用了c a t,并管道传送结果到s e d命令
最后的命令如下:
cat sql.txt| sed 's/-*//g'|sed '/^$//g'|sed '$d'|sed '1d'|awk '{print $1}'
去除行首数字:
sed 's/^[0-9]//g' data.txt
10、一些常用的处理
‘s / \ . $ / / g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含a b c d的行
‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
‘s / ^ [ ] [ ] * / / g’ 删除行首空格
‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/ ^ $ / d’ 删除空行
‘s / ^ . / / g’ 删除第一个字符
‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
‘s / ^ \ / / / g’ 从路径中删除第一个\
‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代
‘S / ^ [ ] / / g’ 删除行首所有t a b键
‘s / [ ] * / / g’ 删除所有t a b键
================================合并与分割==========================
sort uniq join cut paste split
================sort用法=====================
sort命令将许多不同的域按不同的列顺序分类。
1、sort选项
sort命令的一般格式为:
sort -cmu -o output_file [other options] +pos1 +pos2 input_files
下面简要介绍一下s o r t的参数:
-c 测试文件是否已经分类。
-m 合并两个分类文件。
-u 删除所有复制行。
-o 存储s o r t结果的输出文件名。
其他选项有:
-b 使用域进行分类时,忽略第一个空格。
-n 指定分类是域上的数字分类。
-t 域分隔符;用非空格或t a b键分隔域。
-r 对分类次序或比较求逆。
+n n为域号。使用此域号开始分类。
n n为域号。在分类比较时忽略此域,一般与+ n一起使用。
post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始。
2、sort启动方式
缺省情况下, s o r t认为一个空格或一系列空格为分隔符。要加入其他方式分隔,使用- t选项。
sort执行时,先查看是否为域分隔设置了- t选项,如果设置了,则使用它来将记录分隔成域0、域1等等;
如果未设置,用空格代替。缺省时s o r t将整个行排序,指定域号的情况例外。
关于s o r t的一个重要事实是它参照第一个域作为域0,域1是第二个域,等等。
3、文件是否已分类
sort -c data.txt
4、sort分类求逆
如果要逆向s o r t结果,使用-r选项。
sort -t: -r video.txt
5、按指定域分类
有时需要只按第2域(分类键1)分类。
sort -t: +1 video.txt
6、数值域分类
用-n选项。必须用,不然得不到想要的结果。
sort -t: +3n video.txt
7、唯一性分类
使用- u选项进行唯一性(不重复)分类以去除重复行。
8、使用k的其他sort方法
sort还有另外一些方法指定分类键。可以指定k选项。
sort -t: -k4 video.txt
使用k做分类键排序:
可以指定分类键次序。先以第4域,再以第1域分类,命令为-k4 -k1
sort -t: -k4 -k1 video.txt
9、指定sort序列
可以指定分类键顺序,也可以使用- n选项指定不使用哪个分类键进行查询。看下面的sort命令:
sort +0 -2 +3
该命令意即开始以域0分类,忽略域2,然后再使用域3分类。
10、pos用法
指定开始分类的域位置的另一种方法是使用如下格式:
sort +filed.characterin
意即从filed开始分类,但是要在此域的第characterin个字符开始。
11、使用head和tail将输出分类
可以使用h e a d或t a i l查阅任何大的文本文件
head -200 filename
12、awk使用sort输出结果
13、将两个分类文件合并
将文件合并前,它们必须已被分类.
使用-m +0。将这个文件并入已存在的分类文件v i d e o . s o r t,要以名称域进行分类,实际上没有必要加入+ o,但为了保险起见,还是加上的好。
sort -t: -m +0 video2.txt video.sort
===================uniq用法====================
uniq用来从一个文本文件中去除或禁止重复行。一般u n i q假定文件已分类,并且结果正确。
sort的唯一性选项去除所有重复行,而uniq命令并不这样做。重复行是什么?在uniq里意即持续不断重复出现的行,中间不夹杂任何其他文本.
命令一般格式:
uniq -u d c -f inputfile outputfile
其选项含义:
-u 只显示不重复行。
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数。
-f n为数字,前n个域被忽略。
一些系统不识别- f选项,这时替代使用- n。
对特定域进行测试:
使用- n只测试一行一部分的唯一性。例如- 5意即测试第5域后各域唯一性。域从1开始记数。
如果忽略第1域,只测试第2域唯一性,使用- n 2,下述文件包含一组数据,其中第2域代表组代码。
uniq -f2 parts.txt或
uniq -n2 parts.txt
==================join用法(强大呀,像sql里面的join 呢)========================
join用来将来自两个分类文本文件的行连在一起。
下面讲述join工作方式。这里有两个文件f i l e 1和f i l e 2,当然已经分类。每个文件里都有一
些元素与另一个文件相关。由于这种关系, join将两个文件连在一起,这有点像修改一个主文
件,使之包含两个文件里的共同元素。
为有效使用join,需分别将输入文件分类:
join的格式:
join [option] file1,file2
an n 为一数字,用于连接时从文件n中显示不匹配行。例如, -a1显示第一个文件的不匹
配行,- a2为从第二个文件中显示不匹配行。
o n.m n为文件号,m为域号。1.3表示只显示文件1第三域,每个n,m必须用逗号分隔,
如1.3,2.1。
j n m n为文件号,m为域号。使用其他域做连接域
t 域分隔符。用来设置非空格或t a b键的域分隔符。例如,指定冒号做域分隔符- t:
连接域为域0,缺省join删除或去除连接键的第二次重复出现:
join names.txt town.txt
1、不匹配连接,下面的例子显示匹配及不匹配域
join -a1 -a2 names.txt town.txt
只显示第一个文件中不匹配行:
join -a1 names.txt town.txt
2、选择性连接
使用- o选项选择连接域。例如要创建一个文件仅包含人名及城镇, j o i n执行时需要指定显示域。方式如下:
使用1 . 1显示第一个文件第一个域,2 . 2显示第二个文件第二个域,其间用逗号分隔。命令为:
join -o 1.1,2.2 names.txt town.txt
使用-jn m进行其他域连接,例如用文件1域3和文件2域2做连接键,命令为:
join -j1 3 -j2 2 names.txt town.txt
===========================cut用法=========================================
cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
cut一般格式为:
cut [options] file1 file2
下面介绍其可用选项:
-c list 指定剪切字符数。
-f field 指定剪切域数。
-d 指定与空格和t a b键不同的域分隔符。
-c 用来指定剪切范围,如下所示:
-c 1,5-7 剪切第1个字符,然后是第5到第7个字符。
-c1-50 剪切前5 0个字符。
-f 格式与- c相同。
-f 1,5 剪切第1域,第5域。
- f 1,10-12 剪切第1域,第1 0域到第1 2域。
剪切指定域:
cut命令中剪切各域需用逗号分隔,如剪切域1和3,可以使用:
cut -d: -f1,3 pers
=========================paste用法==========================================
cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴
起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。
paste将按行将不同文件行信息放在一行。缺省情况下,paste连接时,用空格或t a b键分隔
新行中不同文本,除非指定- d选项,它将成为域分隔符。
paste格式为;
paste -d -s -file1 file2
选项含义如下:
-d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
-s 将每个文件合并成行而不是按行粘
paste命令管道输入:
paste命令还有一个很有用的选项( -)。意即对每一个( -),从标准输入中读一次数据。
使用空格作域分隔符,以一个4列格式显示目录列表。方法如下:
ls |paste -d":" - - - -
=========================split用法==========================================
split用来将大文件分割成小文件。
split -output_file-size input-filename output-filename
每个文件格式为x [ a a ]到x [ z z ],x为文件名首字母, [ a a ]、[ z z ]为文件名剩余部分顺序字符组合.
split -5000 url_access_user.txt splitfile
发表评论
-
linux命令
2012-06-19 17:52 1385linux 命令 1 sed ... -
linux shell 发邮件
2012-04-16 14:03 1992... -
linux:Shell中exec、source和shell script的区别
2012-03-28 18:35 1699linux:Shell中exec、source和s ... -
ssh远程执行if语句
2012-01-10 17:06 2709ssh root@$IP "if [ -f $R ... -
什么是系统负载?uptime?
2011-09-20 10:35 1868什么是系统负载?uptime? (2010-10- ... -
两个shell脚本,希望大家能够用上
2011-09-08 14:46 1114第一个 定时抓取服务器JVM相关信息 #! /bin/s ... -
定时抓取服务器状态
2011-09-02 20:54 1031#! /bin/sh #get_curre ... -
查看Linux下某个进程里面线程数量
2011-08-30 23:17 4017查看Linux下某个进程里面线程数量 2011-04-0 ... -
linux 常用命令
2011-05-06 11:05 1064linux 程序后台执行来 ... -
后台运行的两个命令
2011-05-06 10:54 9121. 后台运行的两个命令 & 和 ctr+z ... -
top信息详解
2011-04-20 11:59 1077在linux的top命令里的cpu信息是什么意思呢? 2 ... -
Linux下NFS(网络文件系统)的建立与配置方法
2011-03-08 13:13 3097Linux下NFS(网络文件系统)的建立 ... -
Linux操作系统下三种配置环境变量的方法
2011-02-22 12:41 966Linux操作系统下三种配置环境变量的方法 ... -
linux下odbc安装
2011-02-17 16:05 3897一,linux 下面 odbc安装 1 下载ODBC源 ...
相关推荐
Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试test Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux...
col、colrm、comm、csplit、ed、egrep、ex、fgrep、fmt、fold、grep、ispell、jed、joe、join、look、mtype、pico、rgrep、sed、sort、spell、tr、uniq、wc 网络通讯 dip、getty、mingetty、ppp-off、smbd...
这个资源摘要信息主要介绍了 Linux 相关命令的详解,包括文本处理工具 awk、sed、grep、sort、uniq、cut、paste、join 等的语法规则、常用选项和示例应用。 awk 命令是Pattern Scanning and Processing Language,...
自己学习《APUE》时写的linux下一些命令(大概40个左右)实现,仅当学习使用,这些命令包括cat cp echo head ls paste rmdir tail umask who chattr cut expand join mkdir pwd sed tee uniq chgrp date find last ...
### 完整Linux命令参考知识点概述 #### 一、书籍基本信息 - **标题**:《完整Linux命令参考》 - **作者**:J. Purcell - **出版社**:Red Hat Software, Inc. - **出版年份**:1997年 - **ISBN**:0-672-31104-6 - ...
- `cut`和`paste`命令用于处理文本文件的列。 - `ln`命令创建硬链接和符号链接。 - `less`和`more`是文本查看器,`locate`用于快速定位文件路径。 - `mc`是Midnight Commander文件管理器的简称,提供图形化界面管理...
### Linux新手入门十三课:全面...通过深入学习这些课程,用户不仅能够熟悉Linux的目录结构、常用命令和文本编辑器,还能掌握shell脚本编写、软件包管理和版本控制等高级技术,为后续的Linux学习和应用打下坚实的基础。
Linux命令大全(CHM格式离线版) Linux命令大全(修改版) 进行重新编译的说明 文件传输 bye ftp ftpcount ftpshut ftpwho ncftp tftp uucico uucp uupick uuto 备份压缩 ar bunzip2 bzip2 bzip2recover compress cpio ...
### Red Hat Linux命令大全解析 #### 一、系统管理与控制 - **login**: 用户登录命令,用于切换或建立新的用户会话。 - **logout** 和 **exit**: 用于退出当前用户会话,返回到登录界面或上一个shell。 - **...
### Linux常用命令集详解 #### 引言 随着信息技术的发展,Linux作为一种开源的操作系统,在服务器领域及开发环境中占据了举足轻重的地位。相比于Windows,Linux以其稳定性和安全性著称,并且具备丰富的命令行工具...
011_合并与分割_sort_join_uniq_cut_paste_split.pdf 012_tr的用法.pdf 013_登录环境.pdf 014_环境和shell变量.pdf 015_引号.pdf 016_基础shell编程_shell脚本介绍.pdf 017_条件测试_test_expr.pdf 018_控制...
- **cat、sort、uniq**:用于合并、排序和去重文件内容。 - **wc、head、tail**:获取文件的基本统计信息,以及查看文件头部或尾部内容。 - **tac、expand、unexpand**:反向显示文件内容,以及处理制表符。 - **cut...
以上总结了文档中提及的关于LINUX与UNIX SHELL编程的核心知识点,涵盖了文件操作、权限管理、文本处理、脚本编写、环境变量配置、工具使用等多个方面,适用于希望学习和提升shell编程技能的读者。
使用方法,解压到本地目录,配置path,即可在dos下使用linux命令。 windows下能直接执行的linux命令,基本包括日常所有,如:[.exe grolbp.exe regtool.exe a2p.exe grolj4.exe rm.exe a2p5.10.0.exe grops.exe ...
linux命令大全,中文版本 Linux命令大全(修改版) 进行重新编译的说明 文件传输 bye ftp ftpcount ftpshut ftpwho ncftp tftp uucico uucp uupick uuto 备份压缩 ar bunzip2 bzip2 bzip2recover compress cpio dump ...
011_合并与分割_sort_join_uniq_cut_paste_split.pdf 012_tr的用法.pdf 013_登录环境.pdf 014_环境和shell变量.pdf 015_引号.pdf 016_基础shell编程_shell脚本介绍.pdf 017_条件测试_test_expr.pdf 018_控制流结构_...
### Linux常用命令全集:深度解析与应用指南 在Linux操作系统中,命令行是进行系统管理、文件操作、网络配置等任务的核心工具。本文将基于《Linux常用命令全集》的目录,对其中的关键知识点进行深入解读,涵盖文件...