- 浏览: 165158 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
abc08010051:
简单明了,非常不错
java.lang.Thread.State类详解 -
tenderlitch:
jdk api文档里面的描述...
set闲聊 -
xmind:
图不错,收藏之。
图中Thread.wait()改用Objec ...
java.lang.Thread.State类详解 -
lahvey:
因为你的$VALUE值是“sed.txt”,并不是这个文件的内 ...
条件控制(test,expr……) -
tomotoboy:
thanks
tr用法
• 实用的分类(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
个字符开始。
举例:
按第一个域分类
-bash-3.00$ sort -k0 sed.txt
打印分类后的最后第一行
-bash-3.00$ sort -k0 sed.txt | tail -1
打印分类后的第一行
-bash-3.00$ sort -k0 sed.txt | head -1
awk使用sort输出结果
-bash-3.00$ sort -k0 sed.txt | head -1 | awk '{if($1=="caodejun")print $1}'
将两个分类文件合并
-bash-3.00$ sort -m sed.txt sort.txt
将文件合并前,它们必须已被分类。合并文件可用于事务处理和任何种类的修改操作。
下面这个例子,因为忘了把两个家电名称加入文件,它们被放在一个单独的文件里,现在将
之并入一个文件。分类的合并格式为‘sort -m sorted_file1 sorted_file2’。
删除重复行
-bash-3.00$ sort -u sed.txt
• uniq
uniq用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。我们并不强制要求这样做,如果愿意,可以使用任何非排序文本,甚至是无规律行。
-bash-3.00$ who | awk '{print $1} ' |uniq
liuzk423
605408211
shuzigui
nefu_luyanshen
waterlooz
wsoangel
tomotoboy
xp55699312
zyy0904
caodejun
duke1988
605408211
nefu_luyanshen
zyy0904
lonelysand
显示不唯一的行
-bash-3.00$ who | awk '{print $1} ' |uniq -d
-c打印每一重复行出现次数。
-bash-3.00$ who | awk '{print $1} ' |uniq -c
1 liuzk423
1 605408211
1 shuzigui
1 nefu_luyanshen
1 waterlooz
1 wsoangel
1 tomotoboy
1 xp55699312
1 zyy0904
1 caodejun
1 duke1988
1 605408211
1 nefu_luyanshen
1 zyy0904
1 lonelysand
这里没有搞懂nefu_luyanshen明明重复,却显示重复行数目为1
对特定域进行测试,使用-n只测试一行一部分的唯一性。
-bash-3.00$ who | awk '{print $1} ' |uniq -n2
liuzk423
• join
将两个已经分好类的文件连接在一起哈。一些系统要求使用join时文件域要少于20,为公平起见,如果域大于20,应使用DBMS系统,其一般格式如下:
join [options] in_file1 in_file2
-bash-3.00$ cat sed.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66)
liuzk423 pts/6 Jul 20 08:27 (219.245.104.240)
nefu_luyanshen pts/23 Jul 31 14:33 (218.25.6.142)
nefu_luyanshen pts/48 Jul 31 12:59 (218.25.6.142)
shuzigui pts/21 Jul 31 12:11 (121.35.248.193)
tomotoboy pts/41 Jul 31 13:31 (219.221.99.155)
waterlooz pts/25 Jul 31 08:48 (121.0.29.225)
wsoangel pts/35 Jul 31 13:40 (116.233.219.10)
xp55699312 pts/42 Jul 31 14:12 (61.152.132.103)
zyy0904 pts/43 Jul 31 13:53 (125.33.195.36)
-bash-3.00$ cat sort.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66)
-bash-3.00$ join sed.txt sort.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42) pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31) pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66) pts/45 Jul 31 14:41 (218.104.163.66)
选择匹配
-bash-3.00$ join -a1 -a2 sed.txt sort.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42) pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31) pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66) pts/45 Jul 31 14:41 (218.104.163.66)
liuzk423 pts/6 Jul 20 08:27 (219.245.104.240)
nefu_luyanshen pts/23 Jul 31 14:33 (218.25.6.142)
nefu_luyanshen pts/48 Jul 31 12:59 (218.25.6.142)
shuzigui pts/21 Jul 31 12:11 (121.35.248.193)
tomotoboy pts/41 Jul 31 13:31 (219.221.99.155)
waterlooz pts/25 Jul 31 08:48 (121.0.29.225)
wsoangel pts/35 Jul 31 13:40 (116.233.219.10)
xp55699312 pts/42 Jul 31 14:12 (61.152.132.103)
zyy0904 pts/43 Jul 31 13:53 (125.33.195.36)
-bash-3.00$ join -o 1.1 2.2 sed.txt sort.txt
605408211 pts/16
caodejun pts/44
duke1988 pts/45
-bash-3.00$ join -o 1.1 2.2 2.3 sed.txt sort.txt
605408211 pts/16 Jul
caodejun pts/44 Jul
duke1988 pts/45 Jul
• 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域。
-bash-3.00$ ps -ef | cut -c1-8
-bash-3.00$ ps -ef | cut -d: -f1
-bash-3.00$ ps -ef | cut -d: -f1,3
• paste
cut用来从文本文件或标准输出中抽取数据列或者域,然后再用 paste可以将这些数据粘贴
起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相
同。
paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔
新行中不同文本,除非指定- d选项,它将成为域分隔符。paste格式为:
paste -d -s -file1 file2
选项含义如下:
-d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
-s 将每个文件合并成行而不是按行粘贴。
- 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。
• split
split用来将大文件分割成小文件。有时文件越来越大,传送这些文件时,首先将其分割可
能更容易。使用v i或其他工具诸如sort时,如果文件对于工作缓冲区太大,也会存在一些问题。
因此有时没有选择余地,必须将文件分割成小的碎片。
split命令一般格式:
split -output_file-size input-filename output-filename
这里output_file-size 指的是文本文件被分割的行数。
-bash-3.00$ ps -ef |split -10
-bash-3.00$ ls
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
个字符开始。
举例:
按第一个域分类
-bash-3.00$ sort -k0 sed.txt
打印分类后的最后第一行
-bash-3.00$ sort -k0 sed.txt | tail -1
打印分类后的第一行
-bash-3.00$ sort -k0 sed.txt | head -1
awk使用sort输出结果
-bash-3.00$ sort -k0 sed.txt | head -1 | awk '{if($1=="caodejun")print $1}'
将两个分类文件合并
-bash-3.00$ sort -m sed.txt sort.txt
将文件合并前,它们必须已被分类。合并文件可用于事务处理和任何种类的修改操作。
下面这个例子,因为忘了把两个家电名称加入文件,它们被放在一个单独的文件里,现在将
之并入一个文件。分类的合并格式为‘sort -m sorted_file1 sorted_file2’。
删除重复行
-bash-3.00$ sort -u sed.txt
• uniq
uniq用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。我们并不强制要求这样做,如果愿意,可以使用任何非排序文本,甚至是无规律行。
-bash-3.00$ who | awk '{print $1} ' |uniq
liuzk423
605408211
shuzigui
nefu_luyanshen
waterlooz
wsoangel
tomotoboy
xp55699312
zyy0904
caodejun
duke1988
605408211
nefu_luyanshen
zyy0904
lonelysand
显示不唯一的行
-bash-3.00$ who | awk '{print $1} ' |uniq -d
-c打印每一重复行出现次数。
-bash-3.00$ who | awk '{print $1} ' |uniq -c
1 liuzk423
1 605408211
1 shuzigui
1 nefu_luyanshen
1 waterlooz
1 wsoangel
1 tomotoboy
1 xp55699312
1 zyy0904
1 caodejun
1 duke1988
1 605408211
1 nefu_luyanshen
1 zyy0904
1 lonelysand
这里没有搞懂nefu_luyanshen明明重复,却显示重复行数目为1
对特定域进行测试,使用-n只测试一行一部分的唯一性。
-bash-3.00$ who | awk '{print $1} ' |uniq -n2
liuzk423
• join
将两个已经分好类的文件连接在一起哈。一些系统要求使用join时文件域要少于20,为公平起见,如果域大于20,应使用DBMS系统,其一般格式如下:
join [options] in_file1 in_file2
-bash-3.00$ cat sed.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66)
liuzk423 pts/6 Jul 20 08:27 (219.245.104.240)
nefu_luyanshen pts/23 Jul 31 14:33 (218.25.6.142)
nefu_luyanshen pts/48 Jul 31 12:59 (218.25.6.142)
shuzigui pts/21 Jul 31 12:11 (121.35.248.193)
tomotoboy pts/41 Jul 31 13:31 (219.221.99.155)
waterlooz pts/25 Jul 31 08:48 (121.0.29.225)
wsoangel pts/35 Jul 31 13:40 (116.233.219.10)
xp55699312 pts/42 Jul 31 14:12 (61.152.132.103)
zyy0904 pts/43 Jul 31 13:53 (125.33.195.36)
-bash-3.00$ cat sort.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66)
-bash-3.00$ join sed.txt sort.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42) pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31) pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66) pts/45 Jul 31 14:41 (218.104.163.66)
选择匹配
-bash-3.00$ join -a1 -a2 sed.txt sort.txt
605408211 pts/16 Jul 31 13:54 (218.0.1.42) pts/16 Jul 31 13:54 (218.0.1.42)
caodejun pts/44 Jul 31 14:16 (219.148.133.31) pts/44 Jul 31 14:16 (219.148.133.31)
duke1988 pts/45 Jul 31 14:41 (218.104.163.66) pts/45 Jul 31 14:41 (218.104.163.66)
liuzk423 pts/6 Jul 20 08:27 (219.245.104.240)
nefu_luyanshen pts/23 Jul 31 14:33 (218.25.6.142)
nefu_luyanshen pts/48 Jul 31 12:59 (218.25.6.142)
shuzigui pts/21 Jul 31 12:11 (121.35.248.193)
tomotoboy pts/41 Jul 31 13:31 (219.221.99.155)
waterlooz pts/25 Jul 31 08:48 (121.0.29.225)
wsoangel pts/35 Jul 31 13:40 (116.233.219.10)
xp55699312 pts/42 Jul 31 14:12 (61.152.132.103)
zyy0904 pts/43 Jul 31 13:53 (125.33.195.36)
-bash-3.00$ join -o 1.1 2.2 sed.txt sort.txt
605408211 pts/16
caodejun pts/44
duke1988 pts/45
-bash-3.00$ join -o 1.1 2.2 2.3 sed.txt sort.txt
605408211 pts/16 Jul
caodejun pts/44 Jul
duke1988 pts/45 Jul
• 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域。
-bash-3.00$ ps -ef | cut -c1-8
-bash-3.00$ ps -ef | cut -d: -f1
-bash-3.00$ ps -ef | cut -d: -f1,3
• paste
cut用来从文本文件或标准输出中抽取数据列或者域,然后再用 paste可以将这些数据粘贴
起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相
同。
paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔
新行中不同文本,除非指定- d选项,它将成为域分隔符。paste格式为:
paste -d -s -file1 file2
选项含义如下:
-d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
-s 将每个文件合并成行而不是按行粘贴。
- 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。
• split
split用来将大文件分割成小文件。有时文件越来越大,传送这些文件时,首先将其分割可
能更容易。使用v i或其他工具诸如sort时,如果文件对于工作缓冲区太大,也会存在一些问题。
因此有时没有选择余地,必须将文件分割成小的碎片。
split命令一般格式:
split -output_file-size input-filename output-filename
这里output_file-size 指的是文本文件被分割的行数。
-bash-3.00$ ps -ef |split -10
-bash-3.00$ ls
a.out greeting.sh main.c sort.txt xac xai xao |
append.sed grepgrepstrings nohup.out test xad xaj xap |
change.sed grepstr readme.sh test.sh xae xak xaq |
core.log hello seawolf user.online xaf xal xar |
factorial hello.cpp sed.out xaa xag xam |
factorial.c main sed.txt xab xah xan |
发表评论
-
向脚本传递参数
2009-08-21 16:18 1680shift命令 向脚本传递参数时,有时需要将每一个参数偏移以处 ... -
shell函数
2009-08-10 00:18 1996函数由两部分组成: 函数标题。 函数体。 标题是函数名。函 ... -
后台执行命令——守护进程创建
2009-08-09 19:05 1727当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏 ... -
控制流结构——until、while、break、continue
2009-08-08 18:56 2809until循环 条件中1为真, ... -
控制流结构——for
2009-08-08 14:12 1011for循环 for 变量名 in 列表 do 命 ... -
控制流结构——case
2009-08-06 12:53 1003case语句 case语句为多选择语句。可以用case语句匹配 ... -
控制流结构——if then else
2009-08-05 18:49 2597if then else语句 If 条件1 //如果条 ... -
条件控制(test,expr……)
2009-08-04 18:23 1295测试文件状态 test test一般有两种格式,即: test ... -
再谈引号……
2009-08-04 15:37 985引号 /home/l/g/tomotoboy > ech ... -
shell变量及环境变量
2009-08-03 17:54 1539本地变量 显示变量 $GREAT_PICTURE =" ... -
登陆环境
2009-08-03 10:45 877首先看看/etc/passwd 它保存着用户名、加密后的密码等 ... -
Trap命令详解
2009-08-02 17:40 6475原文地址:http://koudai.36 ... -
ulimit命令详解
2009-08-02 17:30 2261原文地址:http://www.diybl.com/cours ... -
tr用法
2009-08-01 15:35 1833tr用来从标准输入中通 ... -
shell输入输出
2009-07-31 12:38 787echo cat read 管道 '|' tee ... -
sed用法介绍
2009-07-30 15:21 2682输出第1行到第3行 -bash-3.00$ sed -n '1 ... -
awk使用
2009-07-29 16:29 1373awk 调用awk有三种方式调 ... -
shell中单引号和双引号的区别
2009-07-29 15:11 1097shell中单引号和双引号的区别 ''可以讲可执行命令文本化 ... -
grep用法详解
2009-07-29 13:45 2542grep grep一般格式为: grep [选项]基本正则表达 ... -
文本过滤
2009-07-28 00:02 7241.使用句点匹配单字符 句点“.”可以匹配任意单字符。例如,如 ...
相关推荐
linux shell 合并与分割
这部分会涵盖AWK的基本语法、模式匹配、字段分割和内建变量。 6. **sed用法介绍** (010sed用法介绍.PDF):sed(流编辑器)可以对文本流进行实时修改,包括替换、删除和插入文本。这部分会介绍sed的基本操作和工作...
11_文本过滤-合并与分割.PDF 12_文本过滤-tr 用法.PDF 13_登录环境-登录环境.PDF 14_登录环境-环境和shell变量.PDF 15_登录环境-引号.PDF 16_基础shell编程-shell脚本介绍.PDF 17_基础shell编程-条件测试.PDF...
_grep家族 |_awk介绍 |_sed用法介绍 |_合并与分割 |_tr用法 第三部分登录环境 |_登录环境 |_环境和shell变量 |_引号 第四部分基础shell编程 |_shell脚本介绍 |_条件测试 |_控制...
第11 章合并与分割.PDF 第12 章tr 用法.PDF 第13 章登录环境.PDF 第14 章环境和shell 变量.PDF 第15 章引号.PDF 第16 章shell 脚本介绍.PDF 第17 章条件测试.PDF 第18 章控制流结构.PDF 第19 章shell 函数.PDF 第20 ...
011合并与分割.pdf 012tr 用法.pdf 013登录环境.pdf 014环境和shell变量.pdf 015引号.pdf 016shell脚本介绍.pdf 017条件测试.pdf 018控制流结构.pdf 019shell 函数.pdf 020向脚本传递参数.pdf 021创建...
本书通过各种实用的系统管理小技巧和趣味脚本代码,详尽地介绍了shell编程各个不同的方面。学完本书后,你将成为一名shell编程高手。 内容简介 本书共分五部分 ,详细介绍了SHELL编程技巧,各种UNIX命令及语法,还...
第十一章 合并与分割 第十二章 TR用法 第三部分 登录环境 第十三章 登录环境 第十四章 环境和SHELL变量 第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流...
8、grep 家族 9、AWK 介绍 10、sed 用法介绍 11、合并与分割 12、tr 的用法 13、登录环境 14、环境和shell 变量 15、引号 基础s h e l l编程 16、shell脚本...
11-合并与分割.pdf 12-tr 用法.pdf 13-登录环境.pdf 14-环境和shell变量.pdf 15-引号.pdf 16-shell脚本介绍.pdf 17-条件测试.pdf 18-控制流结构.pdf 19-shell 函数.pdf 20-向脚本传递参数.pdf 21-创建屏幕输出.pdf ...
而`tr`, `cut`, `paste`, `join`等命令则提供了对文本进行分割、合并和格式化的能力。 最后,书中可能还会涉及一些系统管理问题,如计划任务(cron)、用户和权限管理,以及脚本调试技巧。这部分内容对于系统管理员...
第11章 合并与分割 104 第12章 tr用法 119 第三部分 登录环境 第13章 登录环境 125 第14章 环境和shell变量 132 第15章 引号 146 第四部分 基础shell编程 第16章 shell脚本介绍 151 第17章 条件测试 154 第18章 ...
第十一章 合并与分割 第十二章 TR用法 第三部分 登录环境 第十三章 登录环境 第十四章 环境和SHELL变量 第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第...
8. **文件分类、合并和分割**:`sort`用于排序文件,`uniq`去除重复行,`join`连接两个已排序文件,`cut`提取文件的部分列,`paste`合并多文件的对应行,`split`则将大文件拆分为多个小文件。 9. **tr**:转换和...
本文将深入探讨"高级shell编程"的第二部分——文本过滤,包括正则表达式、grep家族、AWK介绍、sed用法、文件合并与分割以及tr工具的使用。 首先,让我们来理解第7章——正则表达式介绍。正则表达式是一种强大的文本...
为了实现合并,可以在服务器端使用Shell脚本或者编程语言(如Python、Java)编写一个程序,遍历指定目录下的所有小文件,按照正确的顺序读取内容并写入目标大文件。 总的来说,这个Demo展示了如何在Android设备上...
此脚本实现了文件的分割与合并功能,可以将一个大文件分割成多个小文件,并提供了重新合并的脚本。 1. **参数检查**:首先验证传递的参数数量是否正确,即两个参数:待分割的文件名和每个分片的大小。 2. **文件...
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_控制...