gpt4 book ai didi

unix - 使用 grep 提取列

转载 作者:行者123 更新时间:2023-12-04 03:36:26 25 4
gpt4 key购买 nike

我有一个超过 100 列的数据框,每列都标有一个唯一的字符串。第 1 列代表索引变量。我想使用一个基本的 UNIX 命令来提取索引列(第 1 列)+ 使用 grep 的特定列字符串.

例如,如果我的数据框如下所示:

Index  A  B  C...D  E  F
p1 1 7 4 2 5 6
p2 2 2 1 2 . 3
p3 3 3 1 5 6 1

我想使用一些命令来仅提取列“X”,我将使用 grep 指定它,并同时显示第 1 列和第 I 列 grep 'd。我知道我可以使用 cut -f1 myfile第一点,但需要 grep 的帮助每列。作为一个更具体的例子,如果我的 grep短语是“B”,我希望输出为:
Index  B
p1 7
p2 2
p3 3

我是 UNIX 新手,在类似示例中没有找到太多。任何帮助将非常感激!!

最佳答案

您需要使用 awk:

awk '{print $1,$3}' <namefile>

这个简单的命令允许打印文件的第一 ($1) 和第三 ($3) 列。软件 awk 实际上要强大得多。我认为你应该看看 awk 的手册页。

一个不错的组合是使用带有管道的 grep 和 awk。以下代码将仅打印文件中包含“p1”的行的第 1 列和第 3 列:
grep 'p1' <namefile> | awk '{print $1,$3}'

相反,如果您想按行号选择行,则可以将 grep 替换为 sed:
sed 1p <namefile> | awk '{print $1,$3}'

实际上,在所有示例中都可以单独使用 awk:
awk '/p1/{print $1,$3}' <namefile> # will print only lines containing p1
awk '{if(NR == 1){print $1,$3}}' <namefile> # Will print only first line

关于unix - 使用 grep 提取列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com