命令类似于“粘贴 - -”,但按字母顺序排序

Yst*_*tro 6 text-processing sort

我有一个文本文件,如:

Adam
Bob
Cevin
David
Evan
Run Code Online (Sandbox Code Playgroud)

如果我“粘贴 - -”它,我会得到:

Adam   Bob
Cevin  David
Evan
Run Code Online (Sandbox Code Playgroud)

但我需要将下半部分添加为新列:

Adam  David
Bob   Evan
Cevin
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来做到这一点?

Sté*_*las 9

你可以使用:

pr -t -2 file
Run Code Online (Sandbox Code Playgroud)

请注意,它会截断宽度超过页面宽度一半的行(默认情况下为 72 个字符,请参阅-w更改它的选项)。

(请注意,对于 GNU 实现,如果文件包含多字节或零宽度或双宽度字符,则列对齐可能会关闭)。或者:

pr -t -2 -s file
Run Code Online (Sandbox Code Playgroud)

像这样用一个制表符分隔列paste(然后没有截断)。

但是请注意,pr将换^L页符( ) 视为页面分隔符。如果您的文件中不存在该字符,那也不是问题。

或与zsh

print -r -C2 -- ${(f)"$(<file)"}
Run Code Online (Sandbox Code Playgroud)
  • $(<file): 抓取内容 file
  • (f):其分割线˚F EED(换行)字符
  • -r:打印[R AW
  • -C2: 在2 C列上。

  • @JorgeeFG 那不是`-t` 之后的数字,而是`-2` 选项。GNU `pr` 手册页中的 `-COLUMN, --columns=COLUMN`。我将在答案中分解 `-t2` 以避免混淆。 (2认同)