【发布时间】:2020-09-30 15:06:26
【问题描述】:
关于表模式日志文件威胁的第二个问题。我正在处理位于 workdir 中的大量 dlg 文本文件的分析。每个文件都有一个表格(通常位于日志末尾),格式如下:
RMSD TABLE
__________
_____________________________________________________________________
| | | | | |
Rank | Sub- | Run | Binding | Cluster | Reference | Grep
| Rank | | Energy | RMSD | RMSD | Pattern
_____|______|______|___________|_________|_________________|___________
1 1 7 -1.43 0.00 178.12 RANKING
1 2 18 -0.96 1.88 177.35 RANKING
2 1 4 -0.97 0.00 178.43 RANKING
3 1 13 -0.60 0.00 178.03 RANKING
4 1 5 -0.56 0.00 198.10 RANKING
5 1 16 +0.01 0.00 189.71 RANKING
6 1 3 +0.06 0.00 176.95 RANKING
7 1 19 +0.10 0.00 177.27 RANKING
8 1 17 +0.13 0.00 177.60 RANKING
9 1 8 +0.20 0.00 177.05 RANKING
10 1 20 +0.27 0.00 177.43 RANKING
11 1 10 +0.34 0.00 176.33 RANKING
12 1 6 +0.37 0.00 177.30 RANKING
13 1 9 +0.44 0.00 175.48 RANKING
14 1 2 +0.46 0.00 175.67 RANKING
15 1 11 +0.84 0.00 177.52 RANKING
15 2 12 +1.31 1.95 178.03 RANKING
16 1 14 +1.29 0.00 201.01 RANKING
17 1 15 +1.65 0.00 175.50 RANKING
18 1 1 +1.96 0.00 186.83 RANKING
Run time 3.909 sec
Idle time 0.817 sec
目的是遍历所有 .dlg 文件并从表中取出与其第一行相对应的单行(忽略标题),省略最后一列(通常用于 grep 识别)。在上面的表格示例中,这是第三行。
1 1 7 -1.43 0.00 178.12
然后我需要将这一行与日志文件的名称(应该在之前指定)一起添加到 final_log.txt 中。 根据我最近的经验,我的 BASH 工作流程(用于威胁多个文件)的可能模型可能是:
#!/bin/bash
#name of the folder containing all *.dlg filles to be analysed
prot='7000'
#path to the folder with these *.dlg filles
FILES=$PWD/${prot}/*.dlg
#make a final log
echo 'This is a list of processed filles' > $PWD/final_results.log
# we loop over all *.dlg filles in order to extract Clustering Histogram to the final LOG file
for f in $FILES
do
file_name2=$(basename "$f")
file_name="${file_name2/.dlg}"
echo "Processing of $f..."
# here is an expression for GREP to take the line from the table and save it to >> $PWD/final_results.log
done
【问题讨论】:
-
这显然是stackoverflow.com/questions/64123229/…之后的后续问题(输入略有不同)
-
如果输入文件前面有不相关的行,我们可以假设没有一个数字开头,和/或它们都没有以
RANKING结尾吗?无论哪种方式,如果这是一项重要要求,可能会更加明确。 -
"${file_name2/.dlg}"看起来像一个错字,你的意思是"${file_name2%.dlg}"修剪掉扩展名,也许?一般而言,没有做你想做的事情的代码是一种糟糕的方式来解释你想做的事情。 -
你好,是的,对于相同类型的输入数据(带有日志的txt文件),这与我已经问过的问题非常相似。抱歉打错了,是的,实际上我使用这个命令来触发文件的扩展名(如果它是必要的)。简而言之,我正在寻找一个简单的单行命令,可以在循环中引入(它处理工作目录中的填充)来查看 DLG 文本文件并从另一个表中提取第一行(通常发生在末尾)日志)...
-
如果您拒绝回答澄清请求,您可能会面临被否决和/或问题被关闭的风险。 vgersh99 的答案是否合适,或者您是否有阻止它工作的隐藏要求?正确地说,您应该再次接受您实际提出的问题的答案,然后如果您现在有不同的要求,请发布一个新问题。