Linux命令大全:行排序详解 (行排序 linux)

Linux是一个非常流行的开源操作系统,它的灵活性和可定制性使它成为了IT行业中的瑰宝。无论是开发者还是系统管理员,Linux都是一个非常重要的工具。本文将为大家介绍一个Linux中非常重要的命令:行排序命令。

什么是行排序命令?

行排序命令是Linux中用于将文件中的行按特定规则排序的命令。我们可以根据文本的某一列或多列对文本进行排序,从而方便地对文本进行处理和处理。

如何使用行排序命令?

Linux中的行排序命令非常简单易用,只需要遵循以下步骤即可:

1. 打开终端并输入以下命令:sort FILE_NAME

这将打开文件并按默认规则对它们进行排序。默认情况下,行将按字典顺序排序。也就是说,它们将按照每一行的之一个单词进行排序。

2. 按特定列进行排序

如果您想要按某一列进行排序,可以使用以下命令格式:sort -k N FILE_NAME

其中N表示您想要按照哪一列进行排序。例如,如果您想按文件的第三列进行排序,可以输入以下命令:sort -k 3 FILE_NAME

3. 按数字进行排序

如果您正在使用包含数字的文件,则可以使用以下命令对它们进行排序:sort -n FILE_NAME

这将根据文件中的数字进行排序。

4. 反向排序

您可以使用以下命令对文件进行反向排序:sort -r FILE_NAME

这将为您提供从最后一行到之一行的排序结果。

5. 合并重复行

如果您想要合并文件中的重复行,则可以使用以下命令:sort -u FILE_NAME

这将删除文件中的所有重复行。

行排序命令的其他参数

此外,行排序命令还有许多其他参数,这些参数可以帮助您更轻松地处理文本。以下是使用行排序命令时的其他参数:

1. sort -t DELIM FILE_NAME

此命令允许您使用DELIM而不是默认的制表符作为字段分隔符。

2. sort -b FILE_NAME

此命令将忽略行前的空格。

3. sort -M FILE_NAME

此命令根据月份排序。请注意,此命令仅适用于包含月份名称和数字的行。

结论

行排序命令是Linux中非常有用和功能强大的命令之一。它可以帮助您更轻松地处理文本文件,并按照您需要的格式将它们排序。在Linux中,排序命令有许多不同的参数,这些参数可以帮助您更好地控制如何对文本进行排序。 如果您是一位开发者或系统管理员,则在Linux中了解这些参数是非常重要的。希望这篇文章对您有所帮助!

相关问题拓展阅读:

  • 请教linux高手:sed -n ‘s%.* src=\(192.168.[0-9.]*\).*%\1%p’ /proc/net/ip_conntrack | sort |
  • 简述linux系统中有哪些重定向的方式

请教linux高手:sed -n ‘s%.* src=\(192.168.[0-9.]*\).*%\1%p’ /proc/net/ip_conntrack | sort |

其中的 “%” 可以用 “/”替换,这是分隔符。 大体的意思是 对于域名为

“192.168….”的ip字符串用 “\1″ 替换,并且写入文件 “/proc/兄正net/ip_conntract” 中,并对这些字符串排序。对于不符合正则

“* src=\(192.168.*\).*\)”的域名不予处理 (-n 选项的意李尘空思哪瞎)。

sort是Linux命令,主要用于排序文件、对已排序的文件进行合并,并检查文件以确定它们是否已排序

语法

sort > > > > … …

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。-(减号)代替文件名指定标准输入哗团。如果您不指定任何文件名,那么该命令对标准输入排序。可以使用 -o 标志指定输出文件。 如果不指定任何标志,sort 命令基于当前语言环境的整理顺序对输入文件的所有行排序。

排序关键字

排序关键字是输入行的一部分,由字段号和列号指乱碰橘定。字段是输入行的组成部分,由字段分隔符分隔。缺省字段分隔符是由一个或多个连续空格字符组成的序列。使用 -t 标志可指定不同的字段分隔符。在 C 语言和英语语言环境下,制表符和空格字符都是空格符。 使用排序关键字时,sort 命令首先根据之一个排序关键字的内容对所有行排序。然后,根据第二个排序关键字的内容,对所有之一个排序关键字相同的行排序,如此进行下去。按照排序关键字在命令行中吵好出现的顺序给它们编号。如果两行对所有排序关键字的排序都相同,则对全部行依据当前语言环境的整理顺序进行比较。 对字段中的列进行编号时,缺省字段分隔符中的空格符将作为后继字段计数。前导空格不计作之一字段的一部分,-t 标志指定的字段分隔符将不作为字段的一部分计数。可使用 -b 标志忽略前导空格符。 可使用下列两种方法定义排序关键字: * -k KeyDefinition * FSkip.CSkip(废弃版本)。 使用 -k 标志定义排序关键字 -k KeyDefinition 标志采用下列形式: -k > > > 排序关键字包括所有以 FStart 变量指定的字段和 CStart 变量指定的列开头的及以 FEnd 变量指定的字段和 CEnd 变量指定的列结束的字符。如果不指定 Fend,就假定行的最后一个字符。如果不指定 CEnd,就假定 FEnd 字段的最后一个字符。KeyDefinition 变量中的任何字段号或列号都可以省略。缺省值为: FStart 行开头 CStart 字段之一列 FEnd 行结束 CEnd 字段最后一列 如果字段间有任意空格,sort 就把它们看作分隔的字段。 Modifier 变量的值可以是字母 b、d、f、i、n 或 r 中的一个或多个。修饰符仅应用于它们连接的字段定义,与同一字母的标志有同样的效果。修饰符字母 b 仅应用于其连接的字段定义的末尾。例如: -k 3.2b,3r 指定排序关键字,从第三字段的第二非空格列开始并扩展至第三字段结束,对这个关键字的排序以逆向整理顺序完成。如果 FStart 变量和 CStart 变量在命令行末尾以外或在 FEnd 变量和 CEnd 变量之后,那么该排序关键字被忽略。 排序关键字也可用下列方式指定: > > +FSkip1 变量指定跳过的字段数以到达排序关键字之一字段,+CSkip 变量指定在该字段中跳过的列数以到达排序关键字之一个字符。-FSkip 变量指定跳过的字段数以到达排序关键字后的之一个字符,-CSkip 变量指定在该字段中跳过的列数。可以省略任何要跳过的字段和列。缺省值为: FSkip1 行开头 CSkip1 零 FSkip2 行结束 CSkip2 零 Modifier 变量指定的修改量与 -k 标志关键字排序定义中的相同。 因为 +FSkip1.CSkip1 变量指定到达排序关键字前要跳过多少字段和列,所以这些变量指定的字段号和列号通常比排序关键字本身的字段号和列号小 1。例如: +2.1b -3r 指定排序关键字,从第三字段的第二非空格列开始并扩展至第三字段结束,对这个关键字的排序以逆向整理顺序完成。语句 +2.1b 指定跳过两个字段,然后跳过前导空格和另一列。如果 +FSkip1.CSkip1 变量在命令行末尾以外或在 -FSkip2.CSkip2 变量之后,则忽略该排序关键字。 注:一行的更大字段数为 10。

标志

注:在任何排序关键字定义前出现的 -b、-d、-f、-i、-n 或 -r 标志应用于所有排序关键字。-b、-d、-f、-i、-n 或 -r 标志都不能单独出现在 -k KeyDefinition 之后;如果它们作为修饰符连接 KeyDefinition 变量,那么就只应用于连接排序关键字。如果这些标志之一跟随在 +Fskip.Cskip 或 -Fskip.Cskip 排序关键字定义后,那么该标志只能用于此排序关键字。 -A 使用 ASCII 整理顺序代替当前语言环境的整理顺序在逐字节的基础上排序。 -b 忽略前导空格和制表符,找出字段的之一或最后列。 -c 检查输入是否已按照标志中指定的排序规则进行排序。如果输入文件排序不正确,就返回一个非零值。 -d 使用字典顺序排序。比较中仅考虑字母、数字和空格。 -f 比较前将所有小写字母改成大写字母。 -i 比较中忽略所有非打印字符。 -k KeyDefinition 指定排序关键字。KeyDefinition 选项的格式为: > > > 排序关键字包括所有以 FStart 变量指定的字段和 CStart 变量指定的列开头的字符及以 FEnd 变量指定的字段和 CEnd 变量指定的列结束的字符。Modifier 变量的值可以是 b、d、f、i、n 或 r。 修饰符与同一字母的标志等价。 -m 只合并多个输入文件;假设输入文件已经排序。 -n 按算术值对数字字段排序。数字字段可包含前导空格、可选减号、十进制数字、千分位分隔符和可选基数符。对包含任何非数字字符的字段进行数字排序会出现无法预知的结果。 -o OutFile 将输出指向 OutFile 参数指定的文件,而不是标准输出。OutFile 参数值可以与 File 参数值相同。 -r 颠倒指定排序的顺序。 -t Character 指定 Character 为单一的字段分隔符。 -u 禁止按照排序关键字和选项的所有等同排序(每一组行中一行除外)。 -T Directory 将创建的所有临时文件放入 Directory 参数指定的目录中。 -y 用 Kilobytes 参数指定的主存储的千字节数启动 sort 命令,并根据需要增加存储量。(如果 Kilobytes 参数指定的值小于最小存储站点或大于更大存储站点,就以这个最小存储站点或更大存储站点取代)。如果省略 -y 标志,sort 命令以缺省的存储大小启动。-y0 标志用最小存储启动,而 -y 标志(不带 Kilobytes 值)用更大存储启动。sort 命令使用的存储量显著地影响性能。以大存储量对小文件排序将很浪费。 -z RecordSize 如果正在排序的任一行大于缺省的缓冲区大小,要防止出现异常终止。指定 -c 或 -m 标志时,省略排序阶段,使用系统的缺省缓冲大小。如果已排序行超出这一大小,排序异常终止。-z 选项指定排序阶段最长行的记录,因而可在合并阶段分配足够的缓冲区。RecordSize 必须指明等于或大于要合并的最长行的字节值。

退出状态

该命令返回以下出口值: 0 所有输入文件成功输出,或指定了 -c 且正确排序了输入文件。 1 在 -c 选项下,文件没有按指定排序,或如果指定 -c 和 -u 选项,找到了两个具有相同关键字的输入行。 >1 发生错误。

示例

1.排序fruits

1. 要在 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 En_US 的情况下排序 fruits 文件,请输入: LANG=En_US sort fruits 此命令序列显示以升序词典顺序排序的 fruits 文件的内容。每一列的字符,包括空格、数字和特殊字符都经一一比较。例如,如果 fruits 文件包含文本: banana orange Persimmon apple %%banana apple ORANGE sort 命令显示: %%banana ORANGE Persimmon apple apple banana orange 在 ASCII 整理序列中,%(百分号)在大写字母前,大写字母在小写字母前。如果您当前的语言环境指定 ASCII 之外的字符集,结果可能不同。

2. 以字典顺序排序

sort -d fruits 此命令序列排序和显示 fruits 文件的内容,并且只比较字母、数字和空格。如果 fruits 文件与示例 1 相同,那么 sort 命令显示: ORANGE Persimmon apple apple %%banana banana orange -d 标志忽略 %(百分号)字符,因为它不是个字母、数字或空格。(即 %%banana 被 banana 取代)。

3.大小写字母分组

要将包含大写字母和具有类似小写行的特殊字符行分组,请输入: sort -d -f fruits -d 标志忽略特殊字符,-f 标志忽略大小写差异。将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,fruits 文件的输出结果变为: apple apple %%banana banana ORANGE orange Persimmon

4. 除去重复行排序

sort -d -f -u fruits -u 标志告诉 sort 命令除去重复的行,使文件中的每一行唯一。此命令序列显示: apple %%banana orange Persimmon 不仅除去重复的 apple,而且也除去了 banana 和 ORANGE。除去这些是因为 -d 标志忽略 %% 这个特殊字符,-f 标志忽略大小写差异。

5. 除去重复的实例

sort -u +0 -d -f +0 fruits 输入 +0 -d -f 完成的排序与示例 3 中 -d -f 的排序类型相同,+0 进行另一项比较以区分不一样的行。这防止 -u 标志将它们除去。 示例 1 所示的 fruits 文件中,添加的 +0 将 %%banana 与 banana 及 ORANGE 与 orange 区分开来。然而,apple 的两个实例是相同的,所以其中之一被删除。 apple %%banana banana ORANGE orange Persimmon

6. 指定分隔字段的字符

sort -t: +1 vegetables 此命令序列排序 vegetables 文件,对每一行上之一个冒号后的文本进行比较。+1 告诉 sort 命令忽略之一字段,从第二字段的开始到该行的结束进行比较。-t: 标志告诉 sort 命令冒号分隔字段。如果 vegetables 包含: yams:104 turnips:8 potatoes:15 carrots:104 green beans:32 radishes:5 lettuce:15 那么,将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,sort 命令将显示: carrots:104 yams:104 lettuce:15 potatoes:15 green beans:32 radishes:5 turnips:8 注意数字没有按照数字排序。当用字典式分类从左至右比较每一个字符时出现这种情况。换句话说,3 在 5 之前,所以 32 在 5 之前。

7. 排序数字

sort -t: +1 -n vegetables 此命令序列按照第二个字段对 vegetables 文件进行数字排序。如果 vegetables 文件与示例 6 中的相同,那么 sort 命令将显示: radishes:5 turnips:8 lettuce:15 potatoes:15 green beans:32 carrots:104 yams:. 要对多个字段排序,请输入: sort -t: +1 -2 -n +0 -1 -r vegetables 或 sort -t: -k2,2 n -k1,1 r vegetables 此命令序列对第二字段(+1 -2 -n)进行数字排序。在这个顺序中,它以逆字母顺序(+0 -1 -r)对之一字段排序。将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,输出将类似于: radishes:5 turnips:8 potatoes:15 lettuce:15 green beans:32 yams:104 carrots:104 此命令按数字顺序对行排序。当两行数字相同时,它们以逆字母顺序出现。

9. 使用排序的文本替换原始文件

sort -o vegetables vegetables 此命令序列将排序输出存入 vegetables 文件( -o vegetables)。 文件 /usr/bin/sort 包含 sort 命令。 /var/tmp sort 命令处理期间的临时空间。 /usr/tmp 如果不能在 /var/tmp 中创建文件,是 sort 命令处理期间的临时空间。 /tmp 如果不能在 /var/tmp 或 /usr/tmp 中创建文件,是 sort 命令处理期间的临时空间。

也不太懂。

s是替换,p是打印,就是告汪盯在 ip_conntrack文件里符合正则始(即前两个百分号之间的)用后两百分号替换。

简述linux系统中有哪些重定向的方式

重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令。这部分涉及到的比较多的命令主要有:

cat:连接文件sort:排序文本行uniq:忽略或者报告重复行

wc:统计文件的行数、词数、字节数

grep:打印匹配制定模式的行

head:输出文件的头部 tail:输出文件的尾部

tee:从标准输入读,并往标准输出或者文件写

重定向标准输出

使用>可以将本来出现在屏幕的标准输出信息重定向到一个文件中。

使用>>可以在实现重定向时不覆盖原有内容,而是在文件末尾追加内容。

重定向标准错误信息到文件

使用文件描述符,在shell中,则毁棚默认用数字0,1,2分别代表标准输入、标准输出、标准错误。

屏蔽不想看到的信息

Linux中有一个特殊的文件/dev/null,这个文件叫做bit bucket,可以接受输入信息但是什么都不做。例如:ls /usr/ > /dev/null

重定向标准输入

cat命令可以接受一组文件为参数,将这些文件复制到标准输出。我们前面的例子中已经多次使用到cat命令来将文本文件的内容读取到屏幕上。cat还有一个很重要的功能:接受一组文件,然后通过重定向将他们重新组合到一个文件中。

cat ls1 ls2 > ls这个命令将ls1和ls2文件中的内容合并到ls文件中了。cat命令的这种功能不仅仅适用于文本文件,同样对二进制文件有效。这个场景主要在将多个压缩包文件合并到一个压缩包中用到。

cat也可以不传递参数,这种情况下,cat会重定向标准输入到标准输出。

管道

Linux提供|操作符,该操作符可以将一个命令的输出作为另一个命令的输入,这样通过多孙则个命令的协作来完成一些比较复杂的内容。比如,我们可以通过uniq命令来排除重复的行。但是uniq命令往往需要和sort命令配合余悔使用。因为uniq接收一组排好序的文本,而刚好sort可以将文本行排序。

行排序 linux的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于行排序 linux,Linux命令大全:行排序详解,请教linux高手:sed -n ‘s%.* src=\(192.168.[0-9.]*\).*%\1%p’ /proc/net/ip_conntrack | sort |,简述linux系统中有哪些重定向的方式的信息别忘了在本站进行查找喔。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Linux命令大全:行排序详解 (行排序 linux)》
文章链接:https://zhuji.vsping.com/30768.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。