在Windows 7下运行GNUwin32
。
在一个目录中包含许多文件,文件名如下所示:
chem.001.txt
chem.002.b4.txt
chem.003.md6.txt
(more files.txt) ...
在目前的形式中,没有文件包含文件名。
需要清理这些文件以供进一步使用。 想要将所有文件连接成一个文件。 但是还需要在连接内容的开头包含文件名,以便稍后将原始文件与干净数据相关联。
例如,单个连接文件(new_file.txt)将如下所示:
chem.001.txt delimiter (could be a tab or pipe) followed by text from chem.001.txt...
chem.002.b4.txt delimiter followed by text from chem.002.b4.txt ...
chem.003.md6.txt delimiter followed by text from chem.003.md6.txt ...
etc. ...
然后将清理连接文件并根据需要解析内容。
awk
- gawk
可能有办法将文件名与($ 1)相关联,将文件中的文本与($ 2)相关联,然后按顺序打印($ 1,$ 2)将每个文件放入'new_file.txt'但我无法使其正常工作。
怎么做?
答案 0 :(得分:2)
把它放在foo.awk:
BEGIN{ RS="^$"; ORS=""; OFS="|" }
{ gsub(/\n[\r]?/," "); print FILENAME, $0 > "new_file.txt" }
然后将其作为
执行awk -f foo.awk <files>
但是<files>
在Windows中提供了文件名列表。它使用GNU awk作为多字符RS,让您将整个文件作为单个记录读取。