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

时间:2013-05-29 00:59:41

标签: linux unix csh

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

等。

问题是我需要将目录设置为文件的每一行...... 我可以通过命令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

等。

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

...谢谢

1 个答案:

答案 0 :(得分: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'