我有一个.txt
包含不同条目的文件,例如region1a
, region1b
, region2a
, region2b 等。
我有一个具有不同列和行值的 excel 文件。我想使用特定的行和列值来替换region1
文本文件中的say ,并使用不同的列和行值来替换region2
,......就像那样。
我不知道如何继续。感谢你的协助。
示例 Excel 文件如下所示:
文本文件如下所示
p1 (region1a region1b -0.1);
p2 (region1a region1b 5);
p1 (region2a region2b -0.1);
p2 (region2a region2b 5);
预期输出
p1 (-0.01703 0.08515 -0.1);
p2 (-0.01703 0.08515 5);
p1 (0.02297 0.08515 -0.1);
p2 (0.02297 0.08515 5);
从这个 csv ( input.csv
)
no,a,b
region1,-0.01703,0.08515
region2,0.02297,0.08515
你可以把它转换成这个 TSV ( out.tsv
)
region1a -0.01703
region1b 0.08515
region2a 0.02297
region2b 0.08515
使用 Miller ( https://github.com/johnkerl/miller ) 并运行
mlr --c2t reshape -i a,b -o item,value then put '$field=$no.$item' then cut -o -f field,value ./input.csv | tail -n +2 >./out.tsv
您拥有的第二个文件是 ( input.txt
)
p1 (region1a region1b -0.1);
p2 (region1a region1b 5);
p1 (region2a region2b -0.1);
p2 (region2a region2b 5);
然后你可以在 bash 脚本中简单地运行一个 for 循环
#!/bin/bash
set -x
cp ./input.txt ./output.txt
while IFS=$'\t' read -r region value; do
sed -i -r 's/'"$region"'/'"$value"'/g' ./output.txt
done <./out.tsv
该output.txt
会
p1 (-0.01703 0.08515 -0.1);
p2 (-0.01703 0.08515 5);
p1 (0.02297 0.08515 -0.1);
p2 (0.02297 0.08515 5);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句