linux - 在 Linux/Unix 中对文件行进行数字排序

标签 linux file unix sorting command-line

我有两个文件要比较。一档订货号

1    somedata  otherdata
2    somedata  otherdata
3    somedata  otherdata
4    somedata  otherdata
5    somedata  otherdata
6    somedata  otherdata
7    somedata  otherdata
8    somedata  otherdata
Y    somedata  otherdata
Y    somedata  otherdata

其他订单

1    somedata  otherdata
10    somedata  otherdata
11    somedata  otherdata
12    somedata  otherdata
.
.
.
2    somedata  otherdata
Y   somedata  otherdata
Y   somedata  otherdata

如果我可以在运行第二个文件之前对第二个文件进行排序(因为第一个文件有一个我想保留的标题。该标题的每一行都以 #. 开头),那将使我的生活变得无限轻松,所以我正在比较苹果与苹果。

我试过了:sort -n/home/me/file.txt -o/home/me/newfile.txt

这几乎是我想要的,但它将字母放在顶部而不是底部。像这样:

    Y    somedata  otherdata
    Y    somedata  otherdata
    1    somedata  otherdata
    2    somedata  otherdata
    3    somedata  otherdata
    4    somedata  otherdata
    5    somedata  otherdata
    6    somedata  otherdata
    7    somedata  otherdata
    8    somedata  otherdata

我该怎么做才能按数字排序但最终字母排在底部?或者,如果做不到这一点,是否有办法排除以某个字符开头的行?

最佳答案

cat /tmp/file.list | sort -n | grep -v ^[A-Z] > /tmp/file.list.sorted; grep ^[A-Z] /tmp/file.list  >> /tmp/file.list.sorted

这将对位于/tmp/file.list 的文件内容进行数字排序(不包括任何以大写字母开头的字符串)并将内容写入/tmp/file.list.sorted。然后再次解析原始 file.list,这次抓取任何以大写字母开头的行,然后将结果附加到/tmp/file.list.sorted 的底部。

关于linux - 在 Linux/Unix 中对文件行进行数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842325/

相关文章:

python watchdog监视远程机器上的目录更改

regex - Bash 删除所有以包含空格的字符串开头的行

linux - 第三个远程服务器中的 Bash 变量

html - 使用 <input type ="file"> 时限制文件格式?

linux - Bash 脚本输出 htaccess 文件

shell - 如何读取文件的最后一个字并附加 ","(如果不存在)。 UNIX系统

c - 选择共享内存或 unix 信号量键的惯用方法

Linux 排序命令

java - 在java中创建一个受密码保护的文件

Python通过函数调用读取输入行