我如何在bash ubuntu中更改一个包含csv名称列表的txt文件的代码?

我如何在bash ubuntu中更改一个包含csv名称列表的txt文件的代码?,bash,csv,Bash,Csv,我有一个txt文件,其中有几个代码及其元数据。然而,我一直在研究如何用名称更改这些代码 为此,我有一个csv列表,有两列,其中一列是代码,另一列是名称。这些是79 这是我写的剧本草稿: #这里,变量“Nombre”是Nombre_codigos.csv文件第1列的值,变量“Codigo”是Nombre_codigos.csv文件第2列的值 # #然后,我使用命令sed将“Codigo”的值替换为“Nombre”的值,以读取RAxML_bipartitions_newick.newick文件 #!

我有一个txt文件,其中有几个代码及其元数据。然而,我一直在研究如何用名称更改这些代码

为此,我有一个csv列表,有两列,其中一列是代码,另一列是名称。这些是79

这是我写的剧本草稿:

#这里,变量“Nombre”是Nombre_codigos.csv文件第1列的值,变量“Codigo”是Nombre_codigos.csv文件第2列的值
#
#然后,我使用命令sed将“Codigo”的值替换为“Nombre”的值,以读取RAxML_bipartitions_newick.newick文件
#!/bin/bash
阅读nombres_codigos.csv
读取时-r行| |[-n$line]]
做
Nombre=“${line%;*}”
Codigo=“${line#*}”
回声“$Nombre”
echo“$Codigo”
阅读RAxML\u bipartitions\u newick.newick
读取时-r行| |[-n“$line”]
做
如果[“$Nombre”==“$Codigo”]
然后
sed-i“s/$Nombre/$Codigo/g”RAxML\u bipartitions\u newick.newick
回声“再采样”
其他的
回声“无再采样”
fi
完成
p、 s:nombres_codigos.csv类似于:

名义上;Codigo
EU528205_Floripondio_A56y7;EU528205_F
FJ710459_Floripondio_ABCD;FJ710459_F
EF514777_Floripondio123;EF514777_F
EU528999_Floripondio1;EU528999_F

nombres.sh:第2行:读取:`nombres_codigos.csv':不是有效的标识符
nombres.sh:第21行:语法错误:文件意外结束


But I hope from the file RAxML_bipartitions_newick.newick:
(()()()(EU528205:100005000176948E-6,FJ710459):100005000176948E-6):100005000176948E-6,EF514777)100005000176948E-6)

switch to this:

Could someone help me modifying this, please? Thanks very much.
(()

switch to this:

Could someone help me modifying this, please? Thanks very much.

我不是100%确定您想要完成什么,但是您似乎想从
nombres_codigos.csv
中读取每一行,然后在分号上拆分该行。然后您想检查这两个部分是否相同(这对于接下来的
sed
表达式没有意义)

一个直接的,尽管经过清理的重新格式化将是:

#!/bin/bash

while read -r line || [ -n "$line" ]
do
  Nombre="${line%;*}"   ## separate using bash built-in parameter expansions
  Codigo="${line#*;}"
  
  echo "$Nombre"
  echo "$Codigo"
  
  if [ "$Nombre" == "$Codigo" ]
  then
    sed -i "s/$Nombre/$Codigo/g" RAxML_bipartitions_newick.newick
    echo "reemplazar"
  else            
    echo "no reemplazar"
  fi
done < nombres_codigos.csv

这将使脚本看起来的功能保持一致(例如,使用文件
RAxML\u bipartitions\u newick.newick
中的
“$Codigo”
更改
“$Nombre”
的所有实例)如果是这样的话,那就改变条件,让我知道你还有什么问题。

你面对的是什么?你想通过修改来实现什么?你想把你的代码粘贴到帮助语法错误的地方。e来自
nombres_codigos.csv的数据样本,脚本生成的(错误)输出,以及cat中i的(正确)所需输出是危险的uuooc(*不必要地使用
cat
),相反,如果要使用循环,则在读取第| |[-n“$line]”行时是
;do…done
|124;[-n“$line”]
部分保护那些无法将
'\n'
作为最终字符的文件)我找到了示例行…是的,就是这样--“在文件RAxML_bipartitions_newick.newick中用“$code”更改“$Name”的所有实例”---是我想要做的。只有名称和代码值在一个名为codes_names.csv的csv文件中。我刚刚编辑了这篇文章。上面的更改应该可以让你接近。你可以用
替换
<“$1”
并将
.csv
文件的名称作为参数传递给脚本。我没有要测试的
RAxML\u bipartitions\u newick.newick
文件,但我创建了一个简单的文本文件,其中包含
$Nombre
值的行,运行脚本会用相应的
$Codigo替换它们de>值。