我有一个文本文件 (digit.txt),其中一列包含三位数字,范围是 001-...365。在同一目录中,我有数据文本文件。这些数据文件的文件名如下,jplg3240.18i
。只有jplg
部分是不变的。我需要jplg
使用文件名的前 5-7 个字符对 digit.txt 文件中的数字进行数据文件排序,并将其存储在另一个文本文件中。例如:
digit.txt=
005
301
350
005
010
data files= jplg001.18i.txt, jplg005.18i.txt, jplg301.18i.txt, jplg350.18i.txt,jplg010.18i.txt, jplg365.18i.txt
输出文件应该是这个:
output=
jplg005.18i
jplg301.18i
jplg350.18i
jplg005.18i
jplg010.18i
答案1
这里的 while 循环可能有助于实现你的目标:
while read element
do
if [ -f jplg${element}* ]; then
echo jplg${element}* >> datafiles.txt
fi
done < digit.txt
代码应该在文件所在的路径中运行,并根据结果为您提供文件 datafiles.txt 中的文件列表,其中包含文件的完整名称(如果与文件 digit.txt 中的列表匹配)
答案2
如果您的问题是连接 digit.txt 中列出的文件中的数据,那么答案是:
ls jplg* | grep -f digit.txt | xargs cat >out.dat
慢动作:
ls jplg*
:列出您想要的所有文件的超集(如果需要,您可以使其更具限制性)grep -f digit.txt
仅保留包含一个数字的行digit.txt
(假设这三个数字不会出现在文件名的其他任何地方)xargs cat
:适用cat
于 grep 输出中列出的所有文件