替换文件名的字符串并在同一shell脚本中使用它

替换文件名的字符串并在同一shell脚本中使用它,shell,Shell,我有一组文件,命名约定为bond_7.LEU.CA.1.dat bond_10.VAL.CB.1.dat。。。。。并具有以字符串距离开始的其他文件集,而不是以相同的扩展名绑定,即距离_7.LEU.CA.1.dat。。。。我正在尝试在shell脚本中使用粘贴命令合并相应的或后续的文件行 我打算这样做 粘贴键_7.LEU.CA.1.dat距离_7.LEU.CA.1.dat>。/raj/angle\u dist_7.LEU.CA.dat 我曾尝试使用for循环,并坚持替换文件名的字符串以访问适当的文件

我有一组文件,命名约定为bond_7.LEU.CA.1.dat bond_10.VAL.CB.1.dat。。。。。并具有以字符串距离开始的其他文件集,而不是以相同的扩展名绑定,即距离_7.LEU.CA.1.dat。。。。我正在尝试在shell脚本中使用粘贴命令合并相应的或后续的文件行

我打算这样做 粘贴键_7.LEU.CA.1.dat距离_7.LEU.CA.1.dat>。/raj/angle\u dist_7.LEU.CA.dat

我曾尝试使用for循环,并坚持替换文件名的字符串以访问适当的文件

提前感谢,

任何帮助都将不胜感激

#!/bin/bash
for FILE in bond* 
do
    paste "$FILE" "${FILE/bond/distance}" > "../raj/${FILE/bond/angle_dist}"
done
是这样吗

注:这种替换在纯
sh
中不起作用。您应该使用
bash
ksh
zsh
或类似的smth

pps。要将其与
sh一起使用
替换为“${FILE/bond/distance}”

`echo $FILE | sed 's/bond/distance/'`

+1:请注意,虽然
${FILE/bond/distance}
是非标准的,但您可以使用标准的
distance${FILE#bond}
来实现同样的效果。@williampersell:它在bash中是标准的,请参见,在bash中搜索
${string/substring/replacement}
标准是一种矛盾修饰法。它在bash和其他一些shell中工作,但它不是标准的bourneshell语法。