Sort(排序)文本
Sort工作原理就是从每一行作为一个工作单位,进行相互比较,比较的原则是从首字符向后,一次按照ASCII Code进行比较,最后将他们按升序输出:
sort sort.txt
如果希望按照降序排列:使用-r参数
Sort –r sort.txt
Sort默认是输出到标准输出,如果想输出到文件,我们需要进行重定向:
sort -r sort.txt -o sort.txt.bak
如果让排序以数值来排序而不是以字符来排,需要使用-n参数。
sort -n sort.txt
按照字典顺序排序
sort –d sort.txt
忽略大小写排序
sort –f sort.txt
去重复:
sort –usort.txt
但是-u只是对键值有效,对于其他部分就无效了。比如
1 xse
2 Hun
3 hun
1 mk
他依然会去掉整key=1整个记录,只留一条。
关于排序关键字:
-t分隔符 –k分割之后的哪一列
sort -t: -k3 -n /etc/group
按照:分割,然后你去分割后的第三列进行排序。
但是sort命令是不稳定,虽然高效。如果想确保稳定性,需要加上
- stable,但是这样效率没法直接和sort比了,所以需要在平时工作中做一下权衡。
sort -t: -k3 -n --stable /etc/group
文本去重复
Uniq去重复,然后只留下第一条。
他常常用于管道命令,比如sort之后去重复。
参数详解:
-c : 再输出行前面加上每一行在输出文件中出现的次数。
sort -r /tmp/sort.txt | uniq –c
-d :仅显示重复行
sort -r /tmp/sort.txt | uniq -d
-u: 仅显示不重复的行
sort -r /tmp/sort.txt | uniq –u
三:统计文本行数,字数以及字符数
Wc:也适用于管道命令
默认会显示行数,单词数,字符数以及文件path.
wc /etc/passwd
-c 仅显示字符数
wc –c /etc/passwd
-w 仅显示单词个数
wc –w /etc/passwd
-l 仅显示行数
wc –l/etc/passwd
高级应用:
查找某个文件下某个文件的个数
find /etc/ -iname "*.conf" | wc -l
查找某个文件包含某个字符的个数
grep nicky /tmp/Pattern.txt | wc -c
统计多个文件:
Wc /etc/*rc
四:打印和格式化输出
Pr命令可以将文本转换成适合打印的文件,将一个大文件分割成几个页面,然后每一个页面架上标题。
-c10 :表示设置列的个数,不能与-m一起使用
-d:产生2个空格输出
-h : 指定字符串作为页眉,否则将文件名字打印为页眉
-l ;指定每一页行数,如果不指定默认是 66行。
-o:每一行缩进字符位置数目。
-t;不要显示标题
Fmt命令格式化文本:
Fold限制文本宽度:
将超过限定列宽的列加入增列字符后,输出到标准输入设备读取数据。
-w: 指定最大行宽
-b: 按照字节数计算宽度。
五:提取文本的开头和结尾:
Head;提取文件的开头行数,默认是10;
如果想自定义提取的函数需要使用 –数字
head -2 /tmp/sort.txt提取sort.txt文件前2行。
Tail:提取文件的末尾行数:
它刚好是和head相反。
六:字段处理
Cut去除文本字段
有的时候可能遇到这种情况,去除某以通讯录中取出姓名和家庭住址:
Cut被设计用来从一个文本文件或者文本流中提取文本列。
-b:指定字节
-c:指定字符位置:必须紧挨着cut
cut -c 1-20 /etc/address.txt那么前20个字符被截取出来
-f :指定字段的列,如果有多个用,分割
-d :以什么作为分隔
cut -d ':' -f 1,3 /etc/address.txt
以:分隔,cut第一个和第三个字段
Join:连接字段
Linux下的join命令可以连接不同的文件,是的具有相同的key值得记录连接在一起,然后他根据指定的栏位,找到两文件中栏位内容相同的行,将他们合并。
[root@(none) etc]# cat /etc/a.txt
A Link
B Hundon
C kyle
D Single
E Perl
[root@(none) etc]# vi /etc/b.txt
[root@(none) etc]# join /etc/a.txt /etc/b.txt
A Link $1900
B Hundon $200
C kyle $340
D Single $1000
E Perl $500
-a参数
指定join的输出结果和第一个文件记录进行比较,如果其余文件没有这个key,则仅显示第一个文件的记录,-a2就刚好相反。
-e :用指定的字符串来代替空字符串
七:文本替换
使用tr替换字符:
Tr 从标准输入删除或者替换字符,并将结果写入标准输出。
格式 tr str1 str2
Tr{-d | -s} str
功能:转换字符,使用-d删除字符,使用-s标志出去序列。
[root@(none) tmp]# tr 'A-Z' 'a-z' < sort.txt>sort.bak
[root@(none) tmp]# vi sort.bak
Tr命令从标准输入读入,重定向到sort.bat
相关推荐
Linux 教程 - 文本处理 - grep grep 命令是 Linux 系统中最常用的文本处理工具之一,它可以根据用户指定的模式对目标文本逐行进行匹配检查,并打印匹配到的行。grep 命令的格式为:grep [OPTIONS] PATTERN [FILE......
在中标麒麟系统上,由于其基于Linux内核但又具有中国特色,可能需要确保安装过程中处理好依赖关系,有时可能需要手动安装或更新一些库。同样,Ubuntu用户也需注意其默认的库版本可能与QT不完全兼容,可能需要安装...
**Perl**:Perl是一种功能丰富的通用编程语言,常用于文本处理和系统管理任务。在XAMPP环境下,Perl可以用来编写脚本或辅助Web开发过程。 **安装过程**:"xampp-linux-x64-7.4.6-0-installer.run" 文件是一个shell...
压缩包中还包含一个名为“cmake-3.16.0-Linux-x86_64.tar.gz.txt”的文本文件,这通常用来存储有关压缩包的详细信息,如编译时的配置选项、使用指南、许可协议或者发布者的注释。用户可以阅读这个文件获取更多关于这...
总的来说,"protoc-3.0.0-linux-x86_64.zip"是protobuf的Linux版本编译器,对于需要在Linux环境中处理结构化数据的开发者来说,是一个必不可少的工具。通过它,你可以轻松地将数据模型转换为实际的代码,从而在各种...
- **改进的字符串处理**:包括对`String`类的优化,如`lines()`方法,用于按行分割字符串,以及`strip()`和`stripIndent()`方法,用于去除字符串两侧的空白字符。 2. **Linux版JDK**: - Linux是流行的开源操作...
在压缩包子文件的文件名称列表中,我们看到有两个文件:jdk-8u151-linux-x64.tar.gz和新建文本文档.txt。前者是我们的主要关注点,即JDK的压缩文件,通常包含bin目录下的可执行文件(如java、javac等)、lib目录下的...
标题中的"jdk-7u79-linux-i586.rpm.zip"表明这是一个针对Linux系统,i586架构的Java Development Kit(JDK)的版本7更新79的压缩文件,其格式为rpm(Red Hat Package Manager)并进行了zip压缩处理。这个文件通常...
2. "新建文本文档.txt" - 这通常是Windows操作系统中创建的一个默认文件名,可能是包含有关JDK安装或使用指南的文本文件。用户可能需要打开这个文件来获取附加信息或步骤,比如安装指南、配置说明或者版本说明等。 ...
在压缩包的文件列表中还提到了"linux——jdk8版本.txt",这可能是一个包含了Linux系统上JDK 8版本相关信息的文本文件,例如安装步骤、注意事项或其他配置细节。 总之,JDK 8对于Java开发者来说是一个重要的里程碑,...
"zip"是另一种跨平台的文件压缩格式,常见于Windows系统,但也可以在Linux中处理。这里文件名结尾有".zip",意味着这个".tar.gz"文件被进一步压缩成了ZIP格式,可能是为了适应更广泛的解压工具或场景。 标签"jdk...
2. **Text Blocks**:这是一个新的字符串语法,允许程序员方便地处理多行文本,减少不必要的转义字符和字符串连接。 3. **JEP 380: Strongly-Typed HTTP Client**:提供了新的HTTP客户端API,增强了类型安全性和API...
至于“新建文本文档.txt”,这可能是一个意外的文件,通常在Linux环境中不会用到,因为Linux系统使用的是纯文本文件,通常以`.txt`结尾的文件可能在Windows环境中创建。如果它与JDK安装无关,可以忽略。 总结来说,...
在Linux世界里,补丁通常是一个文本文件,包含了对源代码的修改指示,这些指示可以被"patch"命令所理解和应用,以更新原有的源代码树。 "linux-2.6.22.6"代表了Linux内核的一个具体版本。Linux内核的版本号由三部分...
- **字符串切片**:提供`String#lines()`方法,方便处理文本文件。 - **ZGC**:一种低延迟的垃圾收集器,适用于大内存应用。 **2. JDK 11.0.15.1更新** JDK 11.0.15.1是一个小版本更新,主要修复了已知的漏洞和优化...
- 编写Java代码:使用任何文本编辑器或IDE如IntelliJ IDEA或Eclipse。 - 编译Java源文件:使用`javac`命令,例如`javac HelloWorld.java`。 - 运行Java程序:使用`java`命令,例如`java HelloWorld`。 - 使用...
CMake是一款跨平台的自动化构建系统,用于...总的来说,CMake是Linux环境中不可或缺的工具,尤其对于处理复杂的多层依赖关系和跨平台构建任务。了解和熟练使用CMake能够提升开发和运维效率,让软件构建过程更加顺畅。
本文将详细探讨JDK 8u144,针对Linux x64平台的版本,以及如何处理相关的压缩文件。 首先,让我们来认识一下"jdk-8u144-linux-x64.tar.gz.zip"这个文件名。它表明我们正在处理的是一个适用于Linux 64位系统的JDK...
文本块允许程序员更方便地处理多行字符串,减少了转义字符的需求,提高了代码可读性。 2. **Switch表达式增强**:Java 12引入了Switch表达式的实验性支持,Java 15中这一特性更加成熟。现在,Switch可以作为表达式...
解压并覆盖原有文件后,需要重启IDE以使改动生效,这样软件就能正确识别和处理Linux系统下的输入法操作。 在标签中,我们看到了“linux”,这意味着这个问题和解决方案是针对Linux操作系统的。“源码软件”可能意味...