我有两个以制表符分隔格式的文本文件,如下所示。
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 '$4=="+"' "$value_2" )"
minus="$(awk '$4=="-"' "$value_2")"
echo "$plus"
echo "$minus"
请指导我。我想提取那些带有" +"的条目。和" - "符号和存储在变量" $ plus"和" $ minus"。
答案 0 :(得分:3)
file.1似乎没有被使用。要将行添加到变量,您可以执行此操作
$ plus=$(awk '$4=="+"' file.2)
同样,你也可以为负号做同样的事。
$ echo "$plus"
Entry_1 36471 36502 +
Entry_1 36483 36516 +
Entry_1 36495 36526 +
如果这是你想要达到的目的。
答案 1 :(得分:0)
您不能使用一个变量来使用完整的文件进行输入,因为它会将所有内容保存在一行中,您只能获得第一行的结果 -
echo $value_1
Entry_1 36372 36414 7 Aa 14956 36371 - Entry_1 36471 36526 3 Aa 14956 36371 -
如果您的要求只是打印第4栏中带有“+”符号的行,那么您可以尝试以下代码 -
awk '$4 ~ "+" {print $0}' file_2.txt