我的问题是我需要从大量大于0的文本文件名的末尾提取行号。一旦我拥有列表行号,我需要从主文本文件中提取行。从多个文本文件名中提取行,然后从文本文件中提取这些行 - Linux
我想出了如何使用下面的命令执行第一步,该命令查找包含大小大于0字节的.sh.e的所有文件,然后拉出最后几个连续的jobID和一个sed命令条关闭前7个字符(这可能会做得更优雅一点),然后给我们一个很好的行号列表。
文件名的例子:
Job_2017-09-25-08-50-28-ahill.sh.e1191.92
Job_2017-09-25-08-50-28-ahill.sh.e1191.102
Job_2017-09-25-08-50-28-ahill.sh.e1191.252
Job_2017-09-25-08-50-28-ahill.sh.e1191.301
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | sed 's/^.\{7\}//'
92
102
252
301
然后我需要从一个文本文件,它告诉我,我的工作的原始文件位置提取线。
我有麻烦传递给sed或awk来解析主日志。我试过以下内容:
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | awk (NR=sed s/^.\{7\}//) ../temp/files.2017-09-26.txt
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | sed -n "$(sed 's/^.\{7\}//')p" ../temp/files.2017-09-26.txt
find . -name "*.sh.e*" -type f -size +0c | grep -E -o ".e1191.{0,10}" | awk "NR==$(sed 's/^.\{7\}//')" ../temp/files.2017-09-26.txt
所有似乎都失败或给出表达式错误。我现在可以在Excel中做到这一点,但是想从命令行执行此操作,因为我经常需要这样做。
有什么想法?
感谢
这句话“那么我需要从一个文本文件,它告诉我,我的工作的原始文件位置提取线。”目前还不清楚。最终结果应该是什么? – RomanPerekhrest
最终结果是从../temp/files.2017-09-26.txt文件中的行(第)行X(我们从第一个命令获得的)的字符串列表。这是原始WAV文件路径的大量列表。 –
,所以每次脚本都应该搜索文件'/ temp/files.2017-09-26.txt'中的数字'92','102'等,并输出包含这些数字的匹配行? – RomanPerekhrest