Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何编写一个脚本来输出带有两个相应变量的表?_Linux_Bash - Fatal编程技术网

Linux 如何编写一个脚本来输出带有两个相应变量的表?

Linux 如何编写一个脚本来输出带有两个相应变量的表?,linux,bash,Linux,Bash,我试图从一个文件中提取信息,创建一个末尾有两个变量的表,这样来自一列的信息将对应于另一列 #!/bin/bash # Extracting Name (2nd column) name=`awk '{print $9}' PMZ_genes.gff3.txt | grep -oP ";\KName=[^;]+" | uniq` # Extracting values for 1st column for pmz in `awk '{print $9}' PMZ_genes.gff3.txt

我试图从一个文件中提取信息,创建一个末尾有两个变量的表,这样来自一列的信息将对应于另一列

#!/bin/bash
# Extracting Name (2nd column)
name=`awk '{print $9}' PMZ_genes.gff3.txt | grep -oP ";\KName=[^;]+" | 
uniq`

# Extracting values for 1st column
for pmz in `awk '{print $9}' PMZ_genes.gff3.txt | cut -c4-14 | uniq`
do
        echo "Symbols $pmz correspond to $name"
done
这就是我所期望的

Symbols PMZ0001 correspond to Name=One
Symbols PMZ0002 correspond to Name=Two
Symbols PMZ0003 correspond to Name=Three
这就是我现在拥有的

Symbols PMZ0001 correspond to Name=One
Name=Two
Name=Three

Symbols PMZ0002 correspond to Name=One
Name=Two
Name=Three

如果行具有相同数量的项,则可以使用
paste
命令将其合并

#name.txt
A.
B
C
#id.txt
1.
2.
3.
$paste id name
a 1
b 2
C3
您还可以将输出用作
粘贴
命令的文件

#/bin/bash
lsr=$(ls-lasht)
所有者=$(echo“$lsr”| awk'{print”所有者:$4})
fn=$(echo“$lsr”| awk'{print”文件名:“$10}”)

请将问题中的输入样本和预期输出样本张贴在代码标签中,并告知我们。我敢肯定,您会在这里得到更优雅的解决方案。@马克:您最初将变量
name
设置为一个字符串,以后再也不会更改它。在您的示例中,您的循环显然执行了两次,并且在每次迭代中,您都会输出存储在
name
中的(相同)值。这就解释了你得到的结果。此外,我们可以看到,
pmz
从不接受值pmz003(除非您忘记发布这部分输出),因此它可能不是通过
cut…|输出的uniq