在Linux系统中,命令行工具提供了强大的文本处理能力,除了前面所说的vi/vim工具。本文将介绍几个常用的Linux命令,包括cat
、paste
、split
、cut
和wc
,它们分别用于文本文件的拼接、分割、剪切和计数。通过掌握这些命令,你将能够更加高效地在Linux环境中处理文本文件。
准备工作:我们先使用vim创建一个file1.txt、file2.txt,学习使用vi/vim工具。
具体内容如下:
# 使用Vim工具创建file1.txt
$vim file1.txt
# 输入下列内容后,按Esc键,使用:wq 退出并保存!
This is file 1.
Hello world!
# 使用Vim工具创建file2.txt
$vim file2.txt
# 输入下列内容后,按Esc键,使用:wq 退出并保存!
This is file 2.
Goodbye world!
1.cat命令
cat命令的全称是concatenate,意思是连接。它可以将一个或多个文件的内容输出到标准输出,也可以将一个或多个文件的内容拼接到另一个文件中。cat命令的语法格式如下:
cat [选项] [文件]...
其中,选项可以是以下之一:
- -A:显示所有特殊字符,包括制表符、换行符和行尾符。
- -b:对非空行编号。
- -E:在每行的末尾显示一个$符号。
- -n:对所有行编号。
- -s:压缩连续的空行为一行。
- -T:显示制表符为^I。
- -v:显示不可打印的字符。
如果没有指定文件,或者文件为-,则从标准输入读取内容。如果指定了多个文件,cat命令会按顺序将它们的内容输出或拼接。
例如,前面写出的有两个文件file1.txt和file2.txt,它们的内容分别如下:
$cat file1.txt
This is file 1.
Hello world!
$cat file2.txt
This is file 2.
Goodbye world!
如果我们想要将这两个文件的内容输出到屏幕上,可以使用以下命令:
$cat file1.txt file2.txt
This is file 1.
Hello world!
This is file 2.
Goodbye world!
如果我们想要将这两个文件的内容拼接到一个新的文件file3.txt中,可以使用以下命令:
$cat file1.txt file2.txt > file3.txt
$cat file3.txt
This is file 1.
Hello world!
This is file 2.
Goodbye world!
如果我们想要在输出或拼接的过程中对每行进行编号,可以使用-n选项:
$cat -n file1.txt file2.txt
1 This is file 1.
2 Hello world!
3 This is file 2.
4 Goodbye world!
2.paste命令
paste命令的作用是将多个文件的内容按列拼接,即将每个文件的第一行拼接成一行,第二行拼接成一行,以此类推。paste命令的语法格式如下:
paste [选项] [文件]...
其中,参数选项:
- -d:指定拼接时的分隔符,默认为制表符。
- -s:将每个文件的内容拼接成一行,而不是按列拼接。
如果没有指定文件,或者文件为-,则从标准输入读取内容。如果指定了多个文件,paste命令会按顺序将它们的内容按列拼接。
例如,假设有两个文件file1.txt和file2.txt,它们的内容分别如下:
$cat file1.txt
This is file 1.
Hello world!
$cat file2.txt
This is file 2.
Goodbye world!
如果我们想要将这两个文件的内容按列拼接,可以使用以下命令:
$paste file1.txt file2.txt
This is file 1. This is file 2.
Hello world! Goodbye world!
如果我们想要指定拼接时的分隔符为逗号,可以使用-d选项:
$paste -d, file1.txt file2.txt
This is file 1.,This is file 2.
Hello world!,Goodbye world!
如果我们想要将每个文件的内容拼接成一行,可以使用-s选项:
$paste -s file1.txt file2.txt
This is file 1. Hello world!
This is file 2. Goodbye world!
3.split命令
split命令的作用是将一个大文件分割成多个小文件,可以按行数、字节数或后缀进行分割。split命令的语法格式如下:
split [选项] [文件] [前缀]
其中,选项可以是以下之一:
- -a:指定生成的小文件的后缀长度,默认为2。
- -b:指定按字节数进行分割,可以使用k、m、g等单位。
- -d:指定生成的小文件的后缀为数字,而不是字母。
- -l:指定按行数进行分割,默认为1000。
- -n:指定按后缀进行分割,可以使用r或l来指定是否平均分配。
如果没有指定文件,或者文件为-,则从标准输入读取内容。如果没有指定前缀,split命令会使用x作为前缀。
例如,假设有一个文件file.txt,创建file.txt的方法可以参考上文。它的内容如下:
$cat file.txt
This is a large file.
It has many lines of text.
We want to split it into smaller files.
Each file should have 2 lines of text.
如果我们想要按行数进行分割,可以使用以下命令:
$split -l 2 file.txt
$ls
file.txt xaa xab xac
$cat xaa
This is a large file.
It has many lines of text.
$cat xab
We want to split it into smaller files.
Each file should have 2 lines of text.
$cat xac
可以看到,split命令将file.txt分割成了三个小文件,每个文件有两行文本,最后一个文件为空。生成的小文件的后缀为字母,从aa开始。
如果我们想要按字节数进行分割,可以使用以下命令:
$split -b 20 file.txt
$ls
file.txt xaa xab xac xad xae
$cat xaa
This is a large file
$cat xab
.
It has many lines
$cat xac
of text.
We want to spli
$cat xad
t it into smaller
$cat xae
files.
Each file should
可以看到,split命令将file.txt分割成了五个小文件,每个文件有20个字节,最后一个文件不足20个字节。生成的小文件的后缀为字母,从aa开始。
如果我们想要按后缀进行分割,可以使用以下命令:
$split -n 3 file.txt
$ls
file.txt xaa xab xac
$cat xaa
This is a large file.
It has many lines of text.
$cat xab
We want to split it into smaller files.
$cat xac
Each file should have 2 lines of text.
可以看到,split命令将file.txt分割成了三个小文件,每个文件有一个后缀,从1开始。生成的小文件的后缀为字母,从aa开始。
4.cut命令
cut命令的作用是从文件或标准输入中提取指定的列或字段,可以按字符、字节或分隔符进行提取。cut命令的语法格式如下:
cut [选项] [文件]
其中,选项可以是以下之一:
- -c:指定按字符提取,可以使用-或,来指定范围或列表。
- -d:指定字段的分隔符,默认为制表符。
- -f:指定提取的字段,可以使用-或,来指定范围或列表。
- -s:指定只输出包含分隔符的行,忽略不包含分隔符的行。
如果没有指定文件,或者文件为-,则从标准输入读取内容。
例如,假设有一个文件file.txt,它的内容如下:
$cat file.txt
name,age,gender
Alice,20,F
Bob,25,M
Charlie,30,M
如果我们想要提取每行的第一个字段,即姓名,可以使用以下命令:
$cut -d, -f1 file.txt
name
Alice
Bob
Charlie
如果我们想要提取每行的第二个和第三个字段,即年龄和性别,可以使用以下命令:
$cut -d, -f2,3 file.txt
age,gender
20,F
25,M
30,M
如果我们想要提取每行的第一个字符,可以使用以下命令:
$cut -c1 file.txt
n
A
B
C
如果我们想要提取每行的第二个到第四个字符,可以使用以下命令:
$cut -c2-4 file.txt
ame
lic
ob
har
5.wc命令
wc命令的作用是统计文件或标准输入中的行数、字数、字节数等信息。wc命令的语法格式如下:
wc [选项] [文件]...
其中,选项可以是以下之一:
- -c:显示字节数。
- -l:显示行数。
- -m:显示字符数。
- -w:显示字数。
- -L:显示最长行的长度。
如果没有指定文件,或者文件为-,则从标准输入读取内容。如果指定了多个文件,wc命令会显示每个文件的统计信息,以及总的统计信息。
例如,假设有一个文件file.txt,它的内容如下:
$cat file.txt
This is a large file.
It has many lines of text.
We want to split it into smaller files.
Each file should have 2 lines of text.
如果我们想要统计这个文件的行数、字数和字节数,可以使用以下命令:
$wc file.txt
4 16 79 file.txt
可以看到,file.txt有4行,16个字,79个字节。
如果我们想要只显示行数,可以使用 -l 选项:
$wc -l file.txt
4 file.txt
如果我们想要只显示字节数,可以使用 -c 选项:
$wc -c file.txt
79 file.txt
如果我们想要显示最长行的长度,可以使用 -L 选项:
$wc -L file.txt
31 file.txt
可以看到,file.txt的最长行是第三行,它有31个字符。
以上就是Linux常用命令:文本文件的拼接与分割的介绍,希望对你有所帮助。如果你有任何问题或建议,欢迎在评论区留言。谢谢!