我有一个包含这些条目的文本文件
data,34.45,5343
intaa,34353.5, 646463
dedaa, 22542.35, 3564643
eerreg, 3435,335353
rtgegr,343543,34332
我只想替换第一个空行,忽略文件中存在的所有空行。我怎么能这样做呢?
我在正则表达式中读到了有关非贪婪的内容,但找不到适合我需要的匹配。有人能提个建议吗?
我的最终数据应该如下所示
data,34.45,5343
intaa,34353.5, 646463
dedaa, 22542.35, 3564643
eerreg, 3435, 335653
rtgegr,343543,34332
发布于 2015-07-27 20:53:56
冒着提供“解决方案”而不是“使用正则表达式的解决方案”的风险,只需要一个空行上的条件和一个告诉您是否删除了空行的标志。
假设@input
的每个元素中有一行,
@output = grep { /\S/ || !$flag++ } @input
将排除不包含非空格字符的第一行(并且只排除第一行)。您可能更喜欢这样的解决方案,因为多行正则表达式需要格外小心才能正确执行。
发布于 2015-07-27 20:53:04
在perl中设置一个$flag
,并验证它是否在循环下的if
中设置:
perl -lne 'if((/^\s*$/ && !$flag)){$flag=1;next;}print' file
输出:
data,34.45,5343
intaa,34353.5, 646463
dedaa, 22542.35, 3564643
eerreg, 3435,335353
rtgegr,343543,34332
发布于 2015-07-27 20:38:31
假设:
第一行也可以是“空行”
相邻的多个“空行”不会被视为一个空行。只删除第一个空行。
像s/((\n)(\n)|(^\n)())/
这样的怎么样?
并将第一个捕获组替换为空。
我对perl语法不是百分之百确定,因为我的perl时代已经一去不复返了。
https://stackoverflow.com/questions/31662216
复制相似问题