Linux对文件名进行操作——截取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux对文件名进行操作——截取相关的知识,希望对你有一定的参考价值。

参考技术A

在shell中进行文件操作时,我们很多时候想对文件名进行截取,例如去掉文件名的后缀,而只保留剩余的部分。下面介绍使用 $ 来完成上述任务。

我们想对 share/home/jianshu_test.txt 进行操作,输出下列内容:

要完成这个任务,可以首先把 jianshu_test.txt 提取出来:

然后再进行截取:

记住两个原则:

此外:

shell学习文件操作之sort,cut,uniq

linux系统使用过程中,我们经常需要对文件进行一些操作分析,例如对文本进行分类排序,去重,截取一些规则化字段。cut,sort,uniq很方便使用。

1.sort:一般有三种模式,分别为排序文本,检查文件,合并文件。

常用方法及参数
sort [option] [file]
  -b,#忽略前空格或者制表符
  -d, #根据字典顺序排序,仅比较数字,字母和空字符
  -f, #忽略大小写
  -i, #仅仅比较可打印文件
  -n, #根据算术值比较,空格,十进制数字等。
  -R, #根据哈希值随机排序
  -r, #颠倒排序结果
  -u,#删除重复的行,只保留一个文件
[[email protected] home]# cat text
1
1
2
2
3
4
3
33
5
1
44
11
5
6
7
8
A
9
11
10
11
[[email protected] home]# sort text #默认比较首个字符的hash值来排序
1
1
1
10
11
11
11
2
2
3
3
33
4
44
5
5
6
7
8
9
A
[[email protected] home]# sort -n text #按照数值排列
A
1
1
1
2
2
3
3
4
5
5
6
7
8
9
10
11
11
11
33
44
[[email protected] home]# sort -nr text #倒序
44
33
11
11
11
10
9
8
7
6
5
5
4
3
3
2
2
1
1
1
A
[[email protected] home]# sort -R text #随机排序
44
7
8
1
1
1
9
2
2
11
11
11
A
5
5
3
3
33
10
6
4

2.cut命令:有时候文件按照列成规律性的排列,我们需要取出莫一列或者几列数据,就可以使用cut命令从垂直方向去选取部分。

常用方法及参数:
cut options [file]
 -d #自定义分隔符
 -c #只选择指定字符
 -f #只选择列表中指定的文本列,文本列用列号表示,多个列用逗号隔开
 -s #不输出不包含列分隔符的行
例子:查看/etc/passwd文件,取出所有的用户以及对应的uid,gid以及家目录
[[email protected] home]# cut -d":" -f 1,3,4,7  /etc/passwd|head -n10
root:0:0:/bin/bash
bin:1:1:/sbin/nologin
daemon:2:2:/sbin/nologin
adm:3:4:/sbin/nologin
lp:4:7:/sbin/nologin
sync:5:0:/bin/sync
shutdown:6:0:/sbin/shutdown
halt:7:0:/sbin/halt
mail:8:12:/sbin/nologin
uucp:10:14:/sbin/nologin
[[email protected] home]# 

3.uniq:uniq命令用于检查及删除文本文件中重复出现的行列

 -c # 在每列旁边显示该行重复出现的次数。
 -d #仅显示重复出现的行列。
 -u #仅显示出一次的行列
 --help  #显示帮助。
 --version  #显示版本信息。
[[email protected] home]# sort -n text
A
1
1
1
2
2
3
3
4
5
5
6
7
8
9
10
11
11
11
33
44

[[email protected] home]# sort -n text|uniq -c #显示出现的次数
      1 A
      3 1
      2 2
      2 3
      1 4
      2 5
      1 6
      1 7
      1 8
      1 9
      1 10
      3 11
      1 33
      1 44
[[email protected] home]# sort -n text|uniq -u #显示只出现过一次的
A
4
6
7
8
9
10
33
44
[[email protected] home]# sort -n text|uniq -d #显示重复出现的
1
2
3
5
11
[[email protected] home]# 
生成一个55以内的随机数
[[email protected] home]# seq 55|sort -R|head -1
4

以上是关于Linux对文件名进行操作——截取的主要内容,如果未能解决你的问题,请参考以下文章

Linux中文件操作的命令

linux 常用指令 文件操作trick等

linux 安装ssh以及ssh用法与免密登录

如何快速截取某段时间内的日志

Linux下使用Shell截取文件一部分内容保存到新的文件中

Linux 中如何运用awk截取文件名中部分内容?