替换文件名的字符串并在同一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循环,并坚持替换文件名的字符串以访问适当的文件 提前感谢, 任何帮助都将不胜感激替换文件名的字符串并在同一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循环,并坚持替换文件名的字符串以访问适当的文件
#!/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语法。