我想重新格式化一个文本文件,使得匹配字符串后面的行被剪切并附加到具有匹配字符串的行。这是一个示例文本:
Answer:
renice
X.
find / -name filename &
Y.
find / -name filename
Z.
bg find / -name filename
我正在寻找最终结果:
Answer: renice
X. find / -name filename &
Y. find / -name filename
Z. bg find / -name filenames
我无法得到以下正确的修剪建议:
$str =~ s/\s+$//;
要生成我需要内联的结果。空间消失了,但我需要的字符串仍然在下面。要剪切和粘贴的线条直接出现在“答案:”“X”旁边。 “Y”。或“Z.”
答案 0 :(得分:0)
看到你的完整解决方案会有所帮助,但这里有一个可以做你喜欢的单行:
perl -pe's/\s*$/ / if /^.+?[:.]/'
这将使用单个空格替换字符串末尾的任何空格(包括换行符),但仅限于模式匹配时。该模式在行的开头查找一些字符,后跟句点或冒号。添加-i.bak
以就地修改文件。希望这有帮助!