linux 系统通过大量的命令使文本操作和处理变得非常容易。像 tr 和 fmt 这样的命令行工具可以帮助您从终端更改、格式化和修改文本文件。
在本文中,我们将讨论如何在不同的情况下使用 tr 和 fmt 命令来格式化文本。那么,什么是 tr 和 fmt?您又如何使用它们呢?
什么是 tr 命令?
tr 命令是单词 translate 的缩写,它可以帮助用户删除或替换文本文件中的特定字符。它通常与其他命令一起使用,通过获取标准输入、对其执行操作并将结果写入标准输出来工作。
tr命令语法
tr命令的基本语法是:
tr [option]... SET1 [SET2]
登录后复制
字符集合的范围:
- \NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
- \ 反斜杠
- \a Ctrl-G 铃声
- \b Ctrl-H 退格符
- \f Ctrl-L 走行换页
- \n Ctrl-J 新行
- \r Ctrl-M 回车
- \t Ctrl-I tab键
- \v Ctrl-X 水平制表符
- CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
- [CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
- [CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
- [:alnum:] :所有字母字符与数字
- [:alpha:] :所有字母字符
- [:blank:] :所有水平空格
- [:cntrl:] :所有控制字符
- [:digit:] :所有数字
- [:graph:] :所有可打印的字符(不包含空格符)
- [:lower:] :所有小写字母
- [:print:] :所有可打印的字符(包含空格符)
- [:punct:] :所有标点字符
- [:space:] :所有水平与垂直空格符
- [:upper:] :所有大写字母
- [:xdigit:] :所有 16 进位制的数字
- [=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)
如何使用 tr 命令
可以使用 tr 命令更改文本文件的大小写、删除数字、用制表符替换空格,甚至将每个单词放到新行中。tr 命令的可能性是如此之大,如果您知道如何使用它,您可以实现如此多的目标。
对于本例,创建一个文本文件:linuxmi.txt。文件的内容是:
Linuxmi.com. Technology, Simplified! 56789
登录后复制
使用 tr 命令替换字符
为此,指定要替换的字符以及要用什么替换它们。例如,如果你想用 ABCD 替换每个单词的第一个字符,执行这个命令:
cat命令用于显示文件的内容。
cat linuxmi.txt | tr MTS5 ABCD
cat命令用于显示文件的内容。
结果:
Linuxmi.com. Bechnology, Cimplified! D6789
登录后复制
将文本从小写改为大写
要做到这一点,执行以下命令:
cat linuxmi.txt | tr a-z A-Z
cat linuxmi.txt | tr [:lower:] [:upper:]
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ cat linuxmi.txt | tr a-z A-Z
登录后复制
结果为
LINUXMI.COM. TECHNOLOGY, SIMPLIFIED! 56789
登录后复制
将文本从大写改为小写
为此,请执行以下任何命令:
cat linuxmi.txt | tr A-Z a-z
cat linuxmi.txt | tr [:upper:] [:lower:]
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ cat linuxmi.txt | tr A-Z a-z
登录后复制
结果为
linuxmi.com. technology, simplified! 56789
登录后复制
用制表符替换空格
要用制表符替换所有空格,请执行以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.txt | tr [:space:] '\t'
登录后复制
或者,如果要用换行符替换空格以在单独的行中打印每个单词,请将“\t”替换为“\n”。
使用 tr 命令删除字符
要删除字符,可以在 tr 命令旁边使用 -d 选项。例如,如果你想删除 linuxmi.txt 文件中每个单词的字母“e”,执行以下命令:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ cat linuxmi.txt | tr -d 'e'
登录后复制
结果为
Linuxmi.com. Tchnology, Simplifid! 56789
登录后复制
删除所有标点符号
如果你想删除文件中的所有标点符号而不指定是什么符号,使用 -d 选项和解释的序列 [:punct:]:
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.txt | tr -d [:punct:] 结果为
登录后复制
Linuxmicom Technology Simplified 56789
登录后复制
使用tr删除所有数字
删除文本文件中的所有数字,使用这个命令:
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.txt | tr -d [:digit:] 结果为
登录后复制
Linuxmi.com. Technology, Simplified!
登录后复制
使用 tr 补码选项
tr 命令附带 -c 选项,基本上执行与原始操作相反的操作。让我们以前面的命令为例。如果您将补码选项添加到此命令,它将删除所有非数字字符。看看:
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.txt | tr -cd [:digit:] 结果为
登录后复制
56789
登录后复制
什么是 fmt 命令?
fmt 命令是一个简单的文本格式化工具,您可以使用它在 Linux 上打印和处理文本。您还可以使用该命令格式化电子邮件回复。
要获得关于 fmt 命令的命令行帮助,运行以下命令查看其手册页面:
man fmt
登录后复制
fmt命令格式
fmt命令的基本语法是:
fmt [-WIDTH] [OPTION] [FILE]
登录后复制
如何使用 fmt 命令
对于本例,创建一个名为file.txt的文件,并添加以下文本:
Linux fan www.linuxmi.com shares open source news, tutorials on Linux, programming, big data, operations, and databases. I was a big brother back then, the webmaster of Linux fanatics, and a Linux enthusiast using the desktop version. I write in my spare time and hope to share some useful tips with Linux beginners and enthusiasts. 使用默认 fmt 命令
登录后复制
默认的 fmt 命令优化了文本,并以更可读的格式打印出来。fmt 命令的默认宽度是 75 列。执行这个命令来尝试默认的 fmt 操作:
linuxmi@linuxmi:~/www.linuxmi.com$ fmt linuxmi.txt
登录后复制
结果为
更改文本的宽度
要更改文件的宽度,可以使用-w选项。语法如下所示:
fmt -w N filename
修改文件宽度为20列,使用命令:
linuxmi@linuxmi:~/www.linuxmi.com$ fmt -w 50 linuxmi.txt
登录后复制
结果如下图
拆分长行文本
要分割长行,请使用 -s 选项试一下:
linuxmi@linuxmi:~/www.linuxmi.com$ fmt -s linuxmi.txt
登录后复制
结果如下图为
缩进每个段落的第一行
要通过缩进突出显示每个段落的第一行,请使用-t选项。这是语法:
fmt -t filename.
让我们试一试:
linuxmi@linuxmi:~/www.linuxmi.com$ fmt -t linuxmi.txt
登录后复制
结果为
tr和fmt:有用的文本操作命令
tr 和 fmt 使用它们提供的不同操作使文本格式化和处理变得简单和自动化。Linux 和其他基于 Unix 的操作系统为您的每一个文本格式化需求提供了大量的文本操作命令。你只需要知道它们是什么以及如何使用它们。
以上就是详解 Linux 上两个超有用重要的文本操作命令的详细内容,更多请关注小闻网其它相关文章!
评论(0)