我有几百个.txt文件,它们遵循特定的格式,例如。 24行标题文本然后x行数据行(行数随每个文件而变化),后跟一个空行。我感兴趣的唯一一行是最底层的数据。更具体地说,我需要第二列数据的底值。
文件不是制表符分隔的,但标题后的第一列是" D" (D之后的两个空格)。
到目前为止,我尝试连接所有文件并使用notepad ++中的连接文件,但还没有找到标记最下面一行数据的方法。此外,我尝试使用宏失败的'发现'选项。
有人能指出我正确的方向吗?
编辑:不幸的是,我在我的工作PC上这样做是有阻碍的,没有授权下载任何类型的IDE(以及几乎没有能力)。我唯一的工具是Excel和记事本++!
答案 0 :(得分:0)
也许你可以更好地使用bash
脚本:
#!/bin/bash
for f in * #loop over files
do
tail -n 2 "$f" | head -n 1
done
程序因此打印每个文件的一行但最后一行。
然后您可以使用以下命令运行它:
bash script.sh
如果要将结果存储在文件中,请使用重定向:
bash script.sh > outputfile
注意:在脚本中
*
表示匹配任何文件。如果所有文件都是.txt
个文件,则可以使用*.txt
。注意:您应该在文件所在的目录中运行脚本。
答案 1 :(得分:0)
在其他编辑器SynWrite中,可以使用Python脚本(在控制台窗格中输入行,Ctrl +代字号)来实现。
脚本功能 - ed_handles
。用法示例 -
Here is example which prints all tabs contents: for h in ed_handles(): print('---'); print(Editor(h).get_text_all());
答案 2 :(得分:0)
正如其他答案和评论中所提到的,最好的方法是使用脚本( shell 或 Perl ,即使您没有,也可以单独复制)计算机上的管理员权限,或默认情况下集成在Windows中的 bash 和 Powershell 。)
如果你真的想使用Notepad ++,可以用数据替换文件,这是可能的。
我使用了以下示例:
############
## HEADER ##
############
D 1 2 3
D 4 5 6
D 7 8 9
D 0 a b
(empty line)
以下替换将文件更改为第二列的数据
Search
> Find in Files
( Ctrl + Shift + F ).*D .*D \S+\s+(\S+).*
\1
*.txt
Follow current doc.
)Regular expression
并. matches newline
已选中这会将文件更改为
a
注意:正则表达式的解释
.*D .*D
对应所有文字,直到最后D
(D为双倍空格)\S\s+
对应于第一列数据及其后的空格- (\ S +)对应于第二列数据
.*
对应其余