我有多个带有以下文本的文件。
文件 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\"");
等等.....
有人可以在这里帮助我吗?
在任何 UNIX 机器上的任何 shell 中使用任何 sed:
$ sed 's/\([^"]*"\)[^"]*\(.*\/\([^.]*\)\)/\1\3\2/' file
Begin("ORIG_FILE1","derived from file \"/disks/setup/ORIG_FILE1.txt\"");
Begin("ORIG_FILE2","derived from file \"/disks/setup/ORIG_FILE2.txt\"");
Begin("ORIG_FILE4","derived from file \"/disks/setup/ORIG_FILE4.txt\"");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句