我想通过file.txt搜索其中包含foo的所有行,然后过滤掉第3列(aaa colum),然后将aaa的每个实例分配给不同的变量。
我已经过滤了aaa的所有实例,但它只是打印输出。 有任何想法吗。 我猜它必须是某种循环。 我的例子如下。

grep foo file.txt | awk '{print $3}'

file.txt的

1. foo  bar1    aaa1    bbb1    ccc1

2. blablabla...

3. foo  bar2    aaa2    bbb2    ccc2

4. blablabla...

5. foo  bar3    aaa3    bbb3    ccc3

6. blablabla...

===============>>#1 票数:1

听起来你需要一个awk的基础教程 - 谷歌搜索'awk教程'会给你一些。

awk '$1=="foo"{$3="someothervalue";}{print;}' file.text

应该做你所要求的假设“foo”总是在第1列,而aaa总是在库3中 - 不需要grep。 有两个块,第一个将aaa值更新为标记为“foo”的记录的其他值,第二个块打印所有记录,包括修改(如果有)。

更新 :或者如果你想要的是获得“aaa”的值,其中“foo”是关键的记录; 你干脆就这么做

awk '$1=="foo"{print $3;}' file.text

这将只是找到标记为“foo”的所有记录并打印第3列(“aaa”)

===============>>#2 票数:1

根据OP的评论,没有必要存储匹配。 你可以这样做,使用awk的输出作为grep通过其他文件的输入。

 awk '$3 ~ /aaa/ {print $3}' file.txt  | xargs -I {} grep {}  <OTHER_FILES_HERE>

===============>>#3 票数:1

我想搜索file.txt找到所有与foo的行

awk '/foo/

然后筛选出第3列

awk '/foo/ {print $3

然后将aaa的每个实例分配给不同的变量。

aaa=($(awk '/foo/{print $3}' files
echo ${aaa[0])

===============>>#4 票数:0

我假设你的意思是你想将值存储在shell环境变量中。 如果您确实想将值存储在变量中,可以使用eval来分配变量:

eval $(grep foo file.txt | awk '{count+=1; print "AAA"count"="$3";"}')

这为它找到的每个值创建一个单独的变量。

===============>>#5 票数:0

merlin2011建议使用xargs是好的,但你也可以使用一个简单的shell循环并重用相同的变量名:

awk '/foo/{print $3}' |
while read value; do
  grep "$value" file
done

这会将awk的输出分配给变量“value”,并为awk生成的每一行执行一次循环体。

  ask by user3219834 translate from so

未解决问题?本站智能推荐:

2回复

awk将$ 1列分配给shell变量并将$ 1替换为命令输出

一些命令输出是: 我需要将其传递给awk并用主机名替换IP,我要用下一个命令启动它: 所以我需要将cmd输出的$ 1列值分配给$ ip变量,并将其传递回刀cmd,因为ip = $ 1 : 预期的输出: 我怎样才能做到这一点?
1回复

将awk的输出分配给文件中的特定列

我有一个日志文件的以下示例输出,在此我尝试获取下面第7列中IP地址的反向指针记录 如果运行此awk命令,则可以提取第7列的反向记录: 我如何从上面的命令中获取输出以替换第7列中的内容以对其进行更新,因此它将显示为:
2回复

如何将变量分配给AWK中的另一个变量,为什么这段代码不起作用?

这是代码。 我只是想用随机值打印另一列。 代码在它添加的最后一列中打印$ value,而不是打印随机数。 这是bashscript中的ak脚本。 该文件是filename.bsh,如果相关的话。
1回复

将输出分配给变量时,awk命令无法正常工作

这个问题已经在这里有了答案: 如何在Bash中将变量设置为命令的输出? 14个答案 我正在尝试将文件名中的空格转换为下划线,我的脚本如下所示。 当我与echo命令一起使用时,此脚本可以正常工作, 但是在将输出分配给变量时,它不起作用... 有
3回复

将stat | grep | awk分配给bash中的变量

我有一个文件名文件,我需要能够使用bash获取这些文件的大小。 我有以下脚本可以执行此操作,但是它将文件名和大小打印在不同的行上,如果可能的话,我希望它在一行上全部完成。 我很想拥有以下形式: 我怎样才能做到这一点? (我使用的是OSX,因此stat的版本有些奇怪。)
4回复

将awk-for循环变量的值分配给bash变量

临时文件中的内容 我想做的是从用户那里获取输入并在tempfile中搜索它,搜索输出应给出列号 我为此的代码 这正是列号 产量 我需要的是将i变量的值分配给bash变量,以便我可以根据脚本中的需要进行调用。 在此高度赞赏的任何帮助。 我搜索找到任何
2回复

如何在每个元素之后延迟将awk输出分配给netcat?

我想传输一个csv文件的第一个字段,但是有一定的延迟,例如每个元素之后1秒。 我正在使用awk提取第一个字段,然后使用netcat发送它。 我正在使用以下命令,但没有延迟。 任何提示将不胜感激。
1回复

Awk Sed查找结果并将结果分配给多个变量

我必须阅读一个大文件并查找FamlyType的出现。 一旦发现该问题,我需要分配faimlytype部分下的内容,在该部分下,需要将多个数据点分配给变量,以便进行进一步的测试.. 所以我需要在脚本中编写例程以查找Familtype,然后分配用户名和服务列表,hoslist和portNu
4回复

使用AWK查找第n行并将其分配给变量

好的,我有两个文件:一个是基线,另一个是生成的报告。 我必须验证两个文件中匹配的特定字符串,这不仅仅是一个单词,请参见下面的示例: 我在这里的搜索标准是找到唯一的数字,例如“ 56633223223”,并在1行以上和3行以下进行检索,我可以在基本文件和报表上进行查找,然后比较它们是否匹
4回复

awk将字段字符串分配给变量不起作用

只想知道为什么这不起作用? 这是我的awk代码,将“ hh:mm:ss”格式转换为秒 但是,我在命令行上尝试: a.awk有什么问题? 更新只是为了澄清