cmd怎么写一个代码显示提示框 一些命令行小技巧(1)

LINUX 发行版十分好用,而且它们有一些用户可能不知道的技巧。让我们来看看一些命令行实用工具,当你热衷于终端而不是 GUI 时,它们可能更顺手。

我们都知道在一个系统上使用终端会更高效。当你编辑和排版一个文本文件时,终端会让你确切的感受到,生活如此简单。

本文将向你介绍 wcsorttrsed命令。

wc

wc是一个实用工具,全称是 “word count”。顾名思义,它可以用来统计任何文件的行数、单词数和字节数。

让我们来看看它是如何工作的:

$ wc filename lines words characters filename

输出的是文件的行数、单词数、字符数和文件名。

想获得特定的输出,我们必须使用选项:

wc 示例

让我们来看看它的运行结果。

让我们从一个文本文件 lormipsm.txt开始。首先,我们通过cat查看文件内容,然后使用wc

$ cat loremipsm.txt Linux is the best-known and most-used open source operating system. As an operating system, Linux is software that sits underneath all of the other software on a computer, receiving requests from those programs and replaying these requests to the computer's hardware. $ wc loremipsm.txt 3 41 268 loremipsm.txt

假设我只想查看文件的字节数:

$ wc -c loremipsm.txt 268 loremipsm.txt

查看文件的行数:

$ wc -l loremipsm.txt 3 loremipsm.txt

查看文件的单词数:

$ wc -w loremipsm.txt 41 loremipsm.txt

现在只查看文件的字符数:

$ wc -m loremipsm.txt 268 loremipsm.txt

sort

sort命令是最有用的工具之一。它会对文件的数据进行排序。可以根据字符或数字进行升序或降序排列。它也可以用来对文件中的行进行排序和随机化。

使用 sort非常简单。我们需要做的仅仅是提供一个文件名:

$ sort filename

默认的是按照字母顺序对数据进行排序。需要注意的是 sort命令仅仅是对数据进行排序展示。它并不会改写文件。

使用 sort命令的一些有用的选项:

sort 示例

让我们看看 sort的几个简单示例。

我们有一个 list.txt的文件,包含逗号分隔的名称和数值。

首先让我们打印出文件内容并简单排序:

$ cat list.txt Cieran Wilks, 9 Adelina Rowland, 4 Hayden Mcfarlnd, 1 Ananya Lamb, 5 Shyam Head, 2 Lauryn Fuents, 8 Kristian Felix, 10 Ruden Dyer, 3 Greyson Meyers, 6 Luther Cooke, 7 $ sort list.txt Adelina Rowland, 4 Ananya Lamb, 5 Cieran Wilks, 9 Greyson Meyers, 6 Hayden Mcfarlnd, 1 Kristian Felix, 10 Lauryn Fuents, 8 Luther Cooke, 7 Ruden Dyer, 3 Shyam Head, 2

现在对数据进行倒序排序:

$ sort -r list.txt Shyam Head, 2 Ruden Dyer, 3 Luther Cooke, 7 Lauryn Fuents, 8 Kristian Felix, 10 Hayden Mcfarlnd, 1 Greyson Meyers, 6 Cieran Wilks, 9 Ananya Lamb, 5 Adelina Rowland, 4

让我们打乱数据:

$ sort -R list.txt Cieran Wilks, 9 Greyson Meyers, 6 Adelina Rowland, 4 Kristian Felix, 10 Luther Cooke, 7 Ruden Dyer, 3 Lauryn Fuents, 8 Hayden Mcfarlnd, 1 Ananya Lamb, 5 Shyam Head, 2

来看一点更复杂的。这次我们根据第二个字段,也就是数值对数据进行排序,并使用 -o选项将输出保存到另一个文件中:

$ sort -n -k2 -t ',' -o sorted_list.txt list.txt $ ls sorted_list.txt list.txt $ cat sorted_list.txt Hayden Mcfarlnd, 1 Shyam Head, 2 Ruden Dyer, 3 Adelina Rowland, 4 Ananya Lamb, 5 Greyson Meyers, 6 Luther Cooke, 7 Lauryn Fuents, 8 Cieran Wilks, 9 Kristian Felix, 10

这里我们使用 -n选项按数字顺序进行排序,-k选项用来指定要排序的字段(在本例中为第 2 个字段),-t选项指定分隔符或字段分隔符(逗号),-o选项将输出保存到sorted_list.txt文件中。

sed

sed是一个流编辑器,用于过滤和转换输出中的文本。这意味着我们不需要对原文件进行修改,只需要对输出进行修改。如果需要,我们可以将更改保存到一个新的文件中。sed提供了很多有用的选项用于过滤和编辑数据。

sed的语法格式如下:

$ sed [OPTION] &lsquoATTERN’ filename

sed 常用的一些选项:

sed 示例

我们来看看 sed是如何运作的。我们从data文件开始,其中的字段表示编号、名称、年龄和操作系统。

如果行出现在特定的行范围内,该行将打印 2 次:

$ cat data 1 Vicky Grant 20 linux 2 Nora Burton 19 Mac 3 Willis Castillo 21 Windows 4 Gilberto Mack 30 Windows 5 Aubrey Hayes 17 windows 6 Allan Snyder 21 mac 7 Freddie Dean 25 linux 8 Ralph Martin 19 linux 9 Mindy Howard 20 Mac $ sed '3,7 p' data 1 Vicky Grant 20 linux 2 Nora Burton 19 Mac 3 Willis Castillo 21 Windows 3 Willis Castillo 21 Windows 4 Gilberto Mack 30 Windows 4 Gilberto Mack 30 Windows 5 Aubrey Hayes 17 windows 5 Aubrey Hayes 17 windows 6 Allan Snyder 21 mac 6 Allan Snyder 21 mac 7 Freddie Dean 25 linux 7 Freddie Dean 25 linux 8 Ralph Martin 19 linux 9 Mindy Howard 20 Mac

这里的操作用单引号括起来,表示第 3 行和第 7 行,并且使用了 p打印出符合匹配规则的数据。sed 的默认行为是在解析后打印每一行。这意味着由于使用了p,第 3 行到第 7 行打印了两次。

如何打印文件中特定的行?使用 -n选项来消除在输出中不匹配的行:

$ sed -n '3,7 p' data 3 Willis Castillo 21 Windows 4 Gilberto Mack 30 Windows 5 Aubrey Hayes 17 windows 6 Allan Snyder 21 mac 7 Freddie Dean 25 linux

使用 ‘-n’ 仅仅只有第 3 行到第 7 行会被打印。

省略文件中的特定行。使用 d从输出中删除行:

$ sed '3 d' data 1 Vicky Grant 20 linux 2 Nora Burton 19 Mac 4 Gilberto Mack 30 Windows 5 Aubrey Hayes 17 windows 6 Allan Snyder 21 mac 7 Freddie Dean 25 linux 8 Ralph Martin 19 linux 9 Mindy Howard 20 Mac $ sed '5,9 d' data 1 Vicky Grant 20 linux 2 Nora Burton 19 Mac 3 Willis Castillo 21 Windows 4 Gilberto Mack 30 Windows

从文件中搜索特定的关键字:

$ sed -n '/linux/ p' data 7 Freddie Dean 25 linux 8 Ralph Martin 19 linux $ sed -n '/linux/I p' data 1 Vicky Grant 20 Linux 7 Freddie Dean 25 linux 8 Ralph Martin 19 linux

在这些例子中,我们在 / /中使用了一个正则表达式。如果文件中有类似的单词,但大小写不一致,可以使用I使得搜索不区分大小写。回想一下,-n删除了输出中不匹配的行。

替换文件中的单词:

$ sed 's/linux/linus/' data 1 Vicky Grant 20 Linux 2 Nora Burton 19 Mac 3 Willis Castillo 21 Windows 4 Gilberto Mack 30 Windows 5 Aubrey Hayes 17 windows 6 Allan Snyder 21 mac 7 Freddie Dean 25 linus 8 Ralph Martin 19 linus 9 Mindy Howard 20 Mac

这里 s/ / /表示它是一个正则表达式。在两个/之间的就是定位的单词和需要替换的新单词。

tr

tr命令可以用来转换或删除字符。它可以将小写字母转换为大写字母,也可以将大写字母转换为小写字母,可以消除重复字符,也可以删除特定字符。

tr的奇怪之处在于,它不同于wcsortsed那样接受文件作为输入。我们使用|(管道符)为tr命令提供输入。

$ cat filename | tr [OPTION]

tr命令使用的一些选项:

tr 示例

现在让我们使用 tr命令将letter文件中的所有小写字符转换为大写字符:

$ cat letter Linux is too easy to learn, And you should try it too. $ cat letter | tr 'a-z' 'A-Z' LINUX IS TOO EASY TO LEARN, AND YOU SHOULD TRY IT TOO.

这里的 a-zA-Z表示我们想要将az范围内的小写字符转换为大写字符。

删除文件中的 o字符:

$ cat letter | tr -d 'o' Linux is t easy t learn, And yu shuld try it t.

从文件中压缩字符 o意味着如果o在文件中重复出现,那么它将会被删除并且只打印一次:

$ cat letter | tr -s 'o' Linux is to easy to learn, And you should try it to.

总结

这是使用 wcsortsedtr命令的快速演示。这些命令可以方便快捷的操作终端上的文本文件。你可以使用man命令来了解这些命令的更多信息。

via: https://fedoramagazine.org/command-line-quick-tips-wc-sort-sed-and-tr/

作者:mahesh1b选题:lujun9972译者:perfiffer校对:wxy

本文由 LCTT原创编译,Linux中国荣誉推出

,