0

UNIX\LINUX:如何将目录文本添加到文件内的每一行?

注意:我只是使用 shell(CMD TOOL OF LINUX REDHAT EPIC) 没有其他...

你看我有很多日志文件(.txt.gz),我可以通过以下方式打开所有这些文件:

foreach i (./*/*dumpfiles.txt.gz_*)
> foreach? zcat $i
> foreach? grep "-e" $i
> foreach? END

这意味着我正在浏览所有这些文件夹,找到一个文件dumpfiles.txt.gz_

输出如下:

0x4899252 move x -999
0x4899231 move y -0
0x4899222 find scribe
0x4899231 move x -999

ETC..

问题是我需要将目录设置为文件的每一行...我可以通过命令 pwd 获取目录。

我的问题是如何在文件的每一行添加目录名称? 例子:

(directory) (per line of all files)
machine01   0x4899252 move x -999
machine01   0x4899231 move y -0
machine09   0x4899222 find scribe
machine09   0x4899231 move x -999

ETC..

我尝试使用 $ sed 但我找不到解决方案... :(

谢谢...

4

1 回答 1

1

这是一个小 perl 脚本,可以满足您的要求(输入是文件名):

$file = shift;
$path = `pwd`;
chomp($path);
open(TRY, "< $file");
while ($line = <TRY>) { print ($path . $line);}
close(TRY);

当然这会打印到屏幕上,但是您可以将其倒入文件并在脚本末尾将其重命名为$file

如果你想在整个目录下运行它,你可以运行

find . -exec scriptname {} \;

如果您希望它仅在当前目录上,则需要在“。”之后添加一个-maxdepth 1标志。find

更新:

这也有效(没有脚本,只有一个 shell 行):

perl -pi -e 's/^/$ENV{PWD} /g' 
于 2013-07-04T11:34:56.607 回答