linux - 在 *nix 环境中,我如何将列组合在一起?

标签 linux command-line-interface text-processing unix

我有以下文本文件:

A,B,C
A,B,C
A,B,C

有没有办法使用标准的 *nix 工具(cut、grep、awk、sed 等)来处理这样的文本文件并获得以下输出:

A
A
A
B
B
B
C
C
C

最佳答案

你可以这样做:

tr , \\n

这将产生

A
B
C
A
B
C
A
B
C

你可以排序。

除非你想拉第一列然后第二列然后第三列,在这种情况下你想要这样的东西:

awk -F, '{for(i=1;i<=NF;++i) print i, $i}' | sort -sk1 | awk '{print $2}'

为了解释这一点,第一部分生成

1 A
2 B
3 C
1 A
2 B
3 C
1 A
2 B
3 C    

第二部分将稳定排序(因此内部顺序得以保留)

1 A
1 A
1 A
2 B
2 B
2 B
3 C
3 C
3 C    

第三部分将去掉数字

关于linux - 在 *nix 环境中,我如何将列组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719996/

相关文章:

python - 在Python中高效解析大文本文件?

c - 串口和命名管道的区别

linux - 调用另一个脚本以在目录中的每个文件上执行的脚本

Rgdal 在 ubuntu 16.04 上安装失败

c++ - 在 Windows 中删除文件时 CMD 和 PowerShell 有什么区别?

android - sdkmanager 警告 : Failed to read or create install properties file

python - 使用 Click 制作简洁、可安装的 Python 库

linux - 我正在尝试在程序集中创建一个三角形的点,但它不起作用

linux - 如何从文件中以特定单词开头的 bash 输出中保存文本?

python - 有没有办法在Python中执行文本的概念匹配?