【发布时间】:2019-07-13 04:34:24
【问题描述】:
我有多个带有以下文本的文件。
文件 1 的内容:
Begin("tmp1","derived from file \"/disks/setup/ORIG_FILE1.txt\"");
文件 2 的内容:
Begin("tmp1","derived from file \"/disks/setup/ORIG_FILE2.txt\"");
文件 3 的内容:
Begin("tmp9","derived from file \"/disks/setup/ORIG_FILE4.txt\"");
等等……
在 perl 或 sed 中是否有任何命令可以找到带有“Begin”的行,并在该行中从“...”之间的第一个字符串(即我们的例子中的“tmp1”)中搜索并将其存储在一个变量中搜索 /..\"" 之间的最后一个字符串,即(此处为 ORIG_FILE1.txt)并将其存储在变量 2 中,然后从变量 2 中删除“.txt”,然后将变量 1 替换为变量 2 并更新文件。
所以输出文件看起来像:
文件 1 的内容:
Begin("ORIG_FILE1","derived from file \"/disks/setup/ORIG_FILE1.txt\"");
文件 2 的内容:
Begin("ORIG_FILE2","derived from file \"/disks/setup/ORIG_FILE2.txt\"");
文件 3 的内容:
Begin("ORIG_FILE4","derived from file \"/disks/setup/ORIG_FILE4.txt\"");
等等……
有人可以帮我吗?
【问题讨论】:
-
你试过什么?它是如何失败的?
-
perl -pe '/^"\s+(\d+)/"=$1 "/s+\""=$2"' 文件..
-
我是 perl 的初学者