linux shell编程指南第十一章------------合并与分割2
c u t用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
下一节将介绍粘贴用法。
c u t一般格式为:
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域。
参照上一节中的文件‘ p e r s’,现在从' p e r s '文件中剪切文本。使用冒号做其域分隔符。
[root@localhost huangcd]# cat pers
P.Jones:Office Runner:ID897
S.Round:UNIX admin:ID666
L.Clip:Personl Chief:ID982
文件中使用冒号“:”为域分隔符,故可用- d选项指定冒号,如- d:。如果有意观察第3域,
可以使用- f 3。要抽取I D域。可使用命令如下:
[root@localhost huangcd]# cut -d : -f 3 pers
ID897
ID666
ID982
c u t命令中剪切各域需用逗号分隔,如剪切域1和3,即名字和I D号,可以使用:
[root@localhost huangcd]# cut -d : -f 1,3 pers
P.Jones:ID897
S.Round:ID666
L.Clip:ID982
使用- c选项指定精确剪切数目。这种方法需确切知道开始及结束字符。通常我不用这种方
法,除非在固定长度的域或文件名上。
当信息文件传送到本机时,查看部分文件名就可以识别文件来源。要得到这条信息需抽
取文件名后三个字符。然后才决定将之存在哪个目录下。下面的例子显示文件名列表及相应
c u t命令:
[root@localhost huangcd]# cat xxx
2231DG
2232DP
3336DK
[root@localhost huangcd]# cat xxx|cut -c 4-6
1DG
2DP
6DK
[root@localhost huangcd]# who -u
root :0 2013-12-02 22:53 ? 4564
root pts/1 2013-12-02 22:56 . 4859 (:0.0)
[root@localhost huangcd]# who -u|cut -c 1-8
root
root
c u t用来从文本文件或标准输出中抽取数据列或者域,然后再用p a s t e可以将这些数据粘贴
起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相
同。
p a s t e将按行将不同文件行信息放在一行。缺省情况下, p a s t e连接时,用空格或t a b键分隔
新行中不同文本,除非指定- d选项,它将成为域分隔符。
p a s t e格式为;
paste -d -s -file1 file2
选项含义如下:
-d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
-s 将每个文件合并成行而不是按行粘贴。
- 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。
从前面的剪切中取得下述两个文件:
基本p a s t e命令将之粘贴成两列:
[root@localhost huangcd]# cat pas1
ID897
ID666
ID892
[root@localhost huangcd]# cat pas2
P.Jones
S.Round
L.Clip
[root@localhost huangcd]# paste pas1 pas2
ID897 P.Jones
ID666 S.Round
ID892 L.Clip
要创建不同于空格或t a b键的域分隔符,使用- d选项。下面的例子用冒号做域分隔符。
[root@localhost huangcd]# paste -d : pas2 pas1
P.Jones:ID897
S.Round:ID666
L.Clip:ID892
要合并两行,而不是按行粘贴,可以使用- s选项。下面的例子中,第一行粘贴为名字,第
二行是I D号。
[root@localhost huangcd]# paste -s pas2 pas1
P.Jones S.Round L.Clip
ID897 ID666 ID892
p a s t e命令还有一个很有用的选项( -)。意即对每一个( -),从标准输入中读一次数据。
使用空格作域分隔符,以一个4列格式显示目录列表。方法如下:
[root@localhost huangcd]# ls
addaccount.sh files.out nltk-2.0.4 quote.txt
append.sed filetest nltk-2.0.4.tar.gz sedex.txt
c find.dt nohup.out sed.out
change.sed grade.txt pas1 sort.out
data.f grep.err pas2 today
delete_me_and_die huangcdcron pers var_text.sh
Desktop ipython-0.8.2 python vmware-tools-distrib
dht mix.sed PyYAML-3.10 who.out
file1 myfile1.txt PyYAML-3.10.tar.gz wow
filedt myfile.txt qrt.tmp xxx
[root@localhost huangcd]# ls | paste -d " " - - - -
addaccount.sh append.sed c change.sed
data.f delete_me_and_die Desktop dht
file1 filedt files.out filetest
find.dt grade.txt grep.err huangcdcron
ipython-0.8.2 mix.sed myfile1.txt myfile.txt
nltk-2.0.4 nltk-2.0.4.tar.gz nohup.out pas1
pas2 pers python PyYAML-3.10
PyYAML-3.10.tar.gz qrt.tmp quote.txt sedex.txt
sed.out sort.out today var_text.sh
vmware-tools-distrib who.out wow xxx
[root@localhost huangcd]# ls | paste -d : - - - -
addaccount.sh:append.sed:c:change.sed
data.f:delete_me_and_die:Desktop:dht
file1:filedt:files.out:filetest
find.dt:grade.txt:grep.err:huangcdcron
ipython-0.8.2:mix.sed:myfile1.txt:myfile.txt
nltk-2.0.4:nltk-2.0.4.tar.gz:nohup.out:pas1
pas2:pers:python:PyYAML-3.10
PyYAML-3.10.tar.gz:qrt.tmp:quote.txt:sedex.txt
sed.out:sort.out:today:var_text.sh
vmware-tools-distrib:who.out:wow:xxx
s p l i t用来将大文件分割成小文件。有时文件越来越大,传送这些文件时,首先将其分割可
能更容易。使用v i或其他工具诸如s o r t时,如果文件对于工作缓冲区太大,也会存在一些问题。
因此有时没有选择余地,必须将文件分割成小的碎片。
s p l i t命令一般格式:
split -output_file-size input-filename output-filename
这里o u t p u t - f i l e - s i z e指的是文本文件被分割的行数。s p l i t查看文件时,o u t p u t - f i l e - s i z e选项
指定将文件按每个最多1 0 0 0行分割。如果有个文件有2 8 0 0行,那么将分割成3个文件,分别有
1 0 0 0、1 0 0 0、8 0 0行。每个文件格式为x [ a a ]到x [ z z ],x为文件名首字母, [ a a ]、[ z z ]为文件名剩
余部分顺序字符组合,下面的例子解释这一点。
[root@localhost huangcd]# cat split1
this is line1
this is line2
this is line3
this is line4
this is line5
this is line6
[root@localhost huangcd]# split -2 split1
[root@localhost huangcd]# ls -lt |head
总计 1508
-rw-r--r-- 1 root root 28 12-02 23:18 xaa
-rw-r--r-- 1 root root 28 12-02 23:18 xab
-rw-r--r-- 1 root root 28 12-02 23:18 xac
-rw-r--r-- 1 root root 84 12-02 23:17 split1
文件有6行,s p l i t按每个文件两行进行了分割,并按字母顺序命名文件。为进一步确信操
作成功,观察一个新文件内容:
[root@localhost huangcd]# cat xac
this is line5
this is line6
linux shell编程指南第十一章------------合并与分割2的更多相关文章
- linux shell编程指南第十八章------控制流结构
在书写正确脚本前,大概讲一下退出状态.任何命令进行时都将返回一个退出状态.如 果要观察其退出状态,使用最后状态命令: $ echo $? 主要有4种退出状态.前面已经讲到了两种,即最后命令退出状态$ ...
- linux shell编程指南第二十章------向脚本传递参数
前面已经讲到如何使用特定变量$ 1 . . $ 9向脚本传递参数.$ #用于统计传递参数的个数.可 以创建一个u s a g e语句,需要时可通知用户怎样以适当的调用参数调用脚本或函数. 简单地说,下 ...
- Linux与Unix shell编程指南(完整高清版).pdf
找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://vdisk.weibo.com/s/yVBlEojGMQMpv 本书共分五部分 ...
- Linux Unix shell 编程指南学习笔记(第二部分)
第七章 正則表達式介绍 匹配行首与行尾 匹配数据集 职匹配字母和数字 句点 "." 匹配随意单字符. ^,在行首 匹配字符串或字符序列,如查询当前文件夹下的全部文件夹: ls - ...
- linux shell 编程参考
#!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...
- Linux Shell编程与编辑器使用详解
<Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...
- linux shell编程总结
linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...
- Linux音频编程指南
Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序 ...
- linux —— shell 编程(文本处理)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...
随机推荐
- 配置分割Tomcat日志
安装cronolog 官网下载:http://cronolog.org/usage.html ./configuremake;make install 或者 yum install cronolog ...
- Week14(12月9日)
Part I:提问 =========================== 1.ASP.NET MVC围绕事件驱动的页面声明周期而建立,在渲染的页面上可以触发事件. 2.ASP.NET MVC脱离了H ...
- ACM高精度加减乘除模板
[转]#include <iostream> #include <string> using namespace std; inline int compare(string ...
- Treap的读书笔记2
近期開始了自己高级数据结构之旅,在这次旅行中.我将持续把一些高级的数据结构从理论到编码都过一遍,同一时候通过博客形式分享出来.希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构.支持插入.删除 ...
- BitNami一键安装Redmine
1. 简单介绍 对于一个新手,假设严格依照官方文档来安装redmine,我想会"疯"掉的.有没有一种简便的方法.有滴,那就是BitNami. BitNami提供redmine的一键 ...
- 写了交互给后台后来不能用?bug多多多又找不到文件效率低?工作流程帮你优化起来~~~~
前端工作流程(多方交互篇) 新的网页: 1.跟美工沟通,跟产品沟通,跟后台沟通.前两者主要是页面样式.后者主要是表单交互.用哪个框架之类的. 2.实现.(写清楚哪块是用什么验证方式的)→ 给后台. 3 ...
- IBATIS动态SQL
转自:http://www.cnblogs.com/phoebus0501/archive/2011/05/16/2048126.html 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值 ...
- iOSAPP启动时实现加载广告
现在很多APP在启动的时候都在加载广告,现在也很流行,主要是盈利啊.笔者也做了很多关于广告的事情.现在记录下自己在APP启动的时候,怎么加载广告的. 下面总结下广告加载的三种方式 1.现在很多APP的 ...
- CentOS下配置多个Tomcat同时运行 本篇文章来源于 Linux公社网站(www.linuxidc.com)
原文地址:http://blog.csdn.net/tjcyjd/article/details/46553361 版权声明:本文为博主原创文章,未经博主允许不得转载. 同一服务器部署多个tomcat ...
- ThinkPHP快捷函数
16个快捷函数用法 1.A() 实例化控制器 格式:[资源://][模块/]控制器A($name,$layer='',$level='')@param string $name 资源地址 @pa ...