linux - 将 awk 操作存储在变量中

标签 linux bash awk text-processing

我有两个制表符分隔格式的文本文件,如下所示。

文件_1

Entry_1 36372   36414   7   Aa  14956   36371   -
Entry_1 36471   36526   3   Aa  14956   36371   -

文件_2

Entry_1 36365   36395   -
Entry_1 36366   36394   -
Entry_1 36367   36395   -
Entry_1 36368   36395   -
Entry_1 36394   36414   -
Entry_1 36471   36502   +
Entry_1 36483   36516   +
Entry_1 36495   36526   +

这两个文件内容被存储到两个不同的变量中。现在我想提取第 4 列中带有“+”符号的行并将其存储在变量中,然后打印出来。但它抛出错误信息:

"line 4: /usr/bin/awk: Argument list too long"
"line 5: /usr/bin/awk: Argument list too long"

这是我试过的代码

#!/bin/bash
value_1=$(cat file_1.txt);
value_2=$(cat file_2.txt);
plus="$(awk '$4=="+"' "$value_2" )"
minus="$(awk '$4=="-"' "$value_2")"
echo "$plus"
echo "$minus"

请多指教。我想提取那些带有“+”和“-”符号的条目并存储在变量“$plus”和“$minus”中。

最佳答案

file.1 似乎没有被使用。要将行获取到变量,您可以这样做

$ plus=$(awk '$4=="+"' file.2)

同样,你可以对负号做同样的事情。

$ echo "$plus"

Entry_1 36471   36502   +
Entry_1 36483   36516   +
Entry_1 36495   36526   +

如果这是你想要实现的。

关于linux - 将 awk 操作存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202260/

相关文章:

linux - 在 mahout 上安装 mvn 没有工作 (linux)

linux - 查找具有大小和时间并按时间戳排序的命令

linux - 如何通过限制 bash shell 脚本中的线程数来一次复制五个文件而不是一个文件?

linux - bash 解压缩 gz 并存储在变量中

json - 搜索并替换很大文件中的字符串

awk - 如何用特殊字符分割变量

python - 使用 Python 和 Xorg 获取当前窗口标题

linux - 使用 rosdep 安装时缺少资源

bash - 使用 shell 脚本读取 RSS 提要

linux - 如何删除文件中不需要的字符(使用 shell 脚本)