我有一个参考文件“filename”。我在上面加上了“第一”和“第二”两个字。我现在想要生成一些文件,其中第一个和第二个文件被数字替换,这些文件相应地命名。例如:
1-1_filename.txt,1-2_filename.txt,1-3_filename.txt,1-4_filename.txt,2-1_filename.txt,2-2_filename.txt,2-3_filename.txt,2-4_filename.txt,...诸若此类。
我的代码(如下所示)正在进行替换和生成文件,但是我没有得到所有的文件。我只能得到1-4,2-4,3-4和4-4。我已经试验了几个小时,就是找不出我做错了什么。如果有任何建议,我将不胜感激。谢谢。
cp filename.txt filename_bak.txt
for i in 1 2 3 4; do
for j in 1 2 3 4; do
sed s~"FIRST"~"$i"~g $i_filename.txt | sed s~"SECOND"~"$j"~g > $i-$j_filename.txt
done
done发布于 2019-08-28 22:05:04
这似乎是一个打字错误:$i_filename.txt
你的主要问题在这里:$i-$j_filename.txt。变量中允许有下划线,所以被引用的变量是$j_filename。若要避免,请添加大括号以分隔。而且,将整个sed命令放在引号中会更具可读性。以下是您的脚本的修订版:
cp filename.txt filename_bak.txt
for i in 1 2 3 4; do
for j in 1 2 3 4; do
sed "s~FIRST~$i~g" filename.txt | sed "s~SECOND~$j~g" > $i-${j}_filename.txt
done
done顺便说一句,请查看shellcheck.net。这会为你找到主要的问题。我有一个本地可执行版本,它给了我这个错误:
script.sh|5 col 72 warning| j_filename is referenced but not assigned. [SC2154]
https://stackoverflow.com/questions/57693811
复制相似问题