将 awk 操作存储在变量中
Storing awk manipulation in variable
我有两个制表符分隔格式的文本文件,如下所示。
file_1
Entry_1 36372 36414 7 Aa 14956 36371 -
Entry_1 36471 36526 3 Aa 14956 36371 -
file_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 '=="+"' "$value_2" )"
minus="$(awk '=="-"' "$value_2")"
echo "$plus"
echo "$minus"
请指导我。我想提取那些带有“+”和“-”符号的条目并存储在变量“$plus”和“$minus”中。
你不能使用一个变量来使用完整的文件作为输入,因为它会将所有内容都放在一行中,你只会得到第一行的结果 -
echo $value_1
Entry_1 36372 36414 7 Aa 14956 36371 - Entry_1 36471 36526 3 Aa 14956 36371 -
如果您的要求只是打印带有“+”符号的行作为第 4 列,那么您可以尝试下面的代码 -
awk ' ~ "+" {print [=11=]}' file_2.txt
file.1 好像没用过。要将行获取到变量,您可以这样做
$ plus=$(awk '=="+"' file.2)
同样,你可以对负号做同样的事情。
$ echo "$plus"
Entry_1 36471 36502 +
Entry_1 36483 36516 +
Entry_1 36495 36526 +
如果这是你想要实现的。
我有两个制表符分隔格式的文本文件,如下所示。
file_1
Entry_1 36372 36414 7 Aa 14956 36371 -
Entry_1 36471 36526 3 Aa 14956 36371 -
file_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 '=="+"' "$value_2" )"
minus="$(awk '=="-"' "$value_2")"
echo "$plus"
echo "$minus"
请指导我。我想提取那些带有“+”和“-”符号的条目并存储在变量“$plus”和“$minus”中。
你不能使用一个变量来使用完整的文件作为输入,因为它会将所有内容都放在一行中,你只会得到第一行的结果 -
echo $value_1
Entry_1 36372 36414 7 Aa 14956 36371 - Entry_1 36471 36526 3 Aa 14956 36371 -
如果您的要求只是打印带有“+”符号的行作为第 4 列,那么您可以尝试下面的代码 -
awk ' ~ "+" {print [=11=]}' file_2.txt
file.1 好像没用过。要将行获取到变量,您可以这样做
$ plus=$(awk '=="+"' file.2)
同样,你可以对负号做同样的事情。
$ echo "$plus"
Entry_1 36471 36502 +
Entry_1 36483 36516 +
Entry_1 36495 36526 +
如果这是你想要实现的。