gpt4 book ai didi

bash - 如何通过变量 bash 过滤行

转载 作者:行者123 更新时间:2023-12-02 03:05:50 25 4
gpt4 key购买 nike

我需要通过 bash 变量过滤行。

var=$(cat $1 | awk -F"\t" ' $1 == "foo1" { print $0 }')
echo $var

我正在尝试将字符串“foo1”替换为变量

column2=$(echo "foo1")
echo $column2
var=$(cat $1 | awk -v pres=$column2 -F"\t" ' $1 == $pres { print $0 }')
echo $var

在参数 $1 中,我传递了一个包含下一个文本的 file.txt

foo2    AAAA    561214
foo3 AAAA 3
foo4 AAAA 10470670
foo5 AAAA 443507
foo1 AAAA 12473709
foo6 AAAA 1599707
foo8 AAAA 382820
foo7 BBBB 100000000000000
foo1 AAAA 12473709
foo1 AAAA 12473709
foo1 AAAA 12473709
foo1 AAAA 12473709
foo1 AAAA 12473709
foo1 AAAA 12473709
foo1 AAAA 12473709

我需要使用变量来执行此操作,因为我需要循环获取第一列的每个不同值。

编辑

#

我的问题与 bash-How do i use shell variable in a awk script 不同因为我需要执行条件来过滤文件中表的行。我可以做到这一点,已发布在该链接中,但我不知道如何结合起来执行

var=$(cat $1 | awk -F"\t" ' $1 == "foo1" { print $0 }')

这是有效的,但是当我尝试插入变量时停止工作。

最佳答案

您可以尝试以下操作吗?

column2="foo1"
var=$(awk -v pres="$column2" -F"\t" '$1==pres' "$1")

我们不需要在这里使用cat,因为awk可以读取Input_file本身。

第二件事,当我们在代码中条件为 TRUE 时,我们不需要使用 print 默认情况下,它将打印该行(如果没有为该条件给出任何操作),所以我从上面的代码中删除了它。

关于bash - 如何通过变量 bash 过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053251/

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