使用 bash 对文件进行排序,保留标题作为第一个位置

Jen*_*eni 2 awk sed

对文件进行排序时,我不会将标题保留在其位置:

文件_1.tsv

Gene   Number  
a       3
u       7
b       9
Run Code Online (Sandbox Code Playgroud)
sort -k1,1 file_1.tsv

Run Code Online (Sandbox Code Playgroud)

结果:

a     3
b     9
Gene  Number
u     7

Run Code Online (Sandbox Code Playgroud)

所以我正在尝试这段代码:

sed '1d' file_1.tsv | sort -k1,1 > file_1_sorted.tsv 
first='head -1 file_1.tsv' 
sed '1 "$first"' file_1_sorted.tsv
Run Code Online (Sandbox Code Playgroud)

我所做的是删除标题并对文件的其余部分进行排序,然后尝试再次添加标题。但我无法执行最后一部分,所以我想知道如何复制原始文件的标题并将其插入新文件的第一行而不替换其实际的第一行。

Phi*_*ppe 5

你也可以这样做:

{ head -1; sort; } < file_1.tsv
Run Code Online (Sandbox Code Playgroud)

** 更新 **

对于苹果系统:

{ IFS= read -r header; printf '%s\n' "$header" ; sort; } < file_1.tsv
Run Code Online (Sandbox Code Playgroud)