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,但我找不到解决方案...... :(
...谢谢
答案 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'