2.1简介
Unix/linux命令行的使用是一门艺术。实践的越多,收益就越大。
2.2用cat进行拼接
cat=concatenate(拼接)
1 |
#用cat将输入文件的内容与标准输入拼接到一起,‘-’被作为来自stdin文本的文件名 |
补充:
(1)压缩空白行
1 2 |
cat -s file #也可以使用tr,如下,将多个‘\n’压缩为一个‘\n’ |
(2)将制表符显示为 ^|
单从视觉上我们很难将制表符和连续的空格区别,而在Python之类的语言中,将制表符和空格用于代码缩进具有特殊的含义。
1 |
#将制表符标记成^| |
(3)行号
2.3录制与回放终端会话
1 2 3 4 5 6 7 |
#开始录制终端会话 #timing.log用于存储时序信息 #output.session用于存储命令输出 #-t用于将时序数据导入stderr #2>将stderr重定向到timing.log script -t 2> timing.log -a output.session #按播放命令序列输出 |
用script命令建立可在多个用户之间进行广播的视频会话:
打开两个终端Terminal1和Terminal2
(1)在Terminal1中输入:
(2)在Terminal2中输入
(3)返回Terminal1,输入以下命令
1 |
script -f scriptfifo |
2.4文件查找与文件列表
2.9临时文件命名和随机数
1 |
temp_file=$(tempfile) |
会输出一个类似于/tmp/fileaZWm8Y
用一个加带了随机数的文件名作为临时文件名
环境变量$RANDOM总是返回一个随机数
或者使用下面的方法
.$$作为添加的后缀会被扩展为当前运行脚本的进程ID
2.10分隔文件和数据
生成一个大小为100KB而文件内容全是0的文件
分隔文件:
1 |
split -b 10k data.file |
结果:
data.file xaa xab xac xad xae xaf xag xah xai xaj
这些文件以xab、xac、xad的方式命名,意味着他们都有一个字母后缀,若想以数字为后缀,使用-d参数
补充:
为分隔后的文件指定文件名前缀
若想依据行数来分隔的话
1 |
split -l 10 data.file |
csplit是split的变体,它能够依据指定的条件和字符串匹配选项对log文件进行分隔
1 2 3 4 5 6 7 8 |
csplit server.log /SERVER -n 2 -s {*} -f server -b "%02d.log" ; rm server00.log #/SERVER/用来匹配某一行 #/[REGEX]/表示文本模式。包括从当前行(第一行)直到(但不包括)包含“SERVER”的匹配行。 #{*}表示根据匹配重复执行分隔,直到文件末尾为止。可以用{整数}的形式来指定分隔行的次数。 #-s是命令进入静默模式,不打印其他信息 #-n指定分隔后的文件名后缀的数字个数,例如01,02,03等 #-f指定分隔后的文件名前缀。 #-b指定后缀格式。 |
2.11根据扩展名切分文件