首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Perl中每个非空行的开头和结尾添加字符?

在Perl中,您可以使用正则表达式和替换命令来在每个非空行的开头和结尾添加字符。以下是一个示例,演示如何在每个非空行的开头添加"start_",在结尾添加"_end"。

代码语言:perl
复制
#!/usr/bin/perl
use strict;
use warnings;

my $input = "This is a sample text file.
This is the second line.

This is the fourth line.
";

# 使用正则表达式匹配非空行,并在开头和结尾添加字符
$input =~ s/^(.+)$/start_$1_end/gm;

print $input;

输出:

代码语言:txt
复制
start_This is a sample text file._end
start_This is the second line._end

start_This is the fourth line._end

在这个示例中,我们使用了正则表达式/^(.+)$/来匹配非空行,并使用s/.../.../gm命令将匹配到的行添加上"start_"和"_end"。其中,g表示全局替换,m表示多行模式。

您可以根据需要修改正则表达式和替换字符串,以在每个非空行的开头和结尾添加不同的字符。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Perl正则表达式:正则匹配

在初步了解了正则表达式语言之后,接下来需要了解如何在Perl中使用正则表达式。...对于具有多个换行符字符串,也即多行文本数据变量,可以使用//m修饰符,使得脱字符^$可以同时锚定字符开头、每一行开头字符结尾、每一行结尾,如下所示: $_ = "This is the wilma...\n"; } 上面代码如果不加//m修饰符则^只会匹配字符开头从而匹配失败。此外还有另一种更严谨锚位方法,使用\A、\Z、\z锚定字符开头、每一行末尾、字符结尾。...fred /\A\s*\Z/ #匹配一个空行 除了字符串、行首尾,一个单词首尾可以使用\b进行锚位,这里单词指的是\w字符集也即[a-zA-Z0-9_]组成字符串,\b根据出现\w字符...从Perl 5.10开始,允许用户为捕获变量自定义命名,称为标签(label),其写法为在相应捕获组括号里最开头添加问好?label,也即(?正则表达式)。

4.1K10

好物分享第13弹:正则表达式简明学习指南

4)限定范围 [] 对单个字符给出取值范围;[abc]表示a或b或c,[a-f]表a-f任意一个字符串。 [^ ],与[]相反,指取值范围以外字符;[^abc]表示abc。 ....表示任何单个字符 ^,表示字符开头部分;^abc,匹配abc 开头字符串。 $,匹配字符结尾;abc$,匹配abc 结尾字符串。...额外补充一些: \d 数字,等价于[0-9] \D 数字。 \w 单词字符,等价于[A-Z], [a-z], [0-9] 及 -。 \W 单词字符。 \t 制表符。 \n 空行。...\s 空格型内容,\t, \n等。 \S 空格。 优先级 image.png 总结 实验楼真的很良心了: 小练习 第一题: ?...第三题: PY{:3}N可表示 PN PYN PYYN PYYYN 经典正则表达式 1)^[A-Za-z]+,匹配开头结尾之间,也就是任意数目的二十六个大小写字母组成字符串。

1.2K20
  • Python 基础语法

    Python语言与Perl,CJava等语言有许多相似之处。但是,也存在一些差异。 在本章我们将来学习Python基础语法,让你快速学会Python编程。...; 这里,假定您Python解释器在/usr/bin目录,使用以下命令执行脚本: $ chmod +x test.py # 脚本文件添加可执行权限 $....在python,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 python标识符是区分大小写。 以下划线开头标识符是有特殊意义。...以单下划线开头(_foo)代表不能直接访问类属性,需通过类提供接口进行访问,不能用"from xxx import *"而导入; 以双下划线开头(__foo)代表类私有成员;以双下划线开头结尾...""" ---- Python空行 函数之间或类方法之间用空行分隔,表示一段新代码开始。类函数入口之间也用一行空行分隔,以突出函数入口开始。

    1.1K10

    Perl语言入门系列之三:文件输入与输出

    在上面程序,由于即使这一行为空行、0,也会有换行符存在,在布尔值上下文中仍为真,所以去掉defined函数仍是成立while ($line = ) {…}。...格式字符每个输出元素格式以%开头,以字母或者换行符结尾,指定每个输出数据元素格式(字符串、整数、浮点数、对齐方式等),中间空格隔开或者直接相连,内插在双引号里。...常见格式输出如下所示: ①输出浮点数: -e表示在命令行直接运行Perl指令,将要运行Perl代码放在后面单引号内;这里为了突出两部分参数将输出数据列表添加了括号,括号可以省略。...事实上,每个程序都会返回一个退出码,0代表成功,0代表失败,其中1代表命令参数语法错误,2代表程序错误,3找不到配置文件,die使用如下所示: if (!...} "…" print $rocks_fh, "…"; #打印变量$rocks_fh内容字符串到标准输出 下面为文件句柄在Perl程序使用示例: open FILE1, '<', "$ARGV[

    2.4K20

    超详细正则表达式(上:正则表达式语法)

    一些语言特殊扩展(比如perl,这部分就不讲了)   二:正则表达式通配符区别   分类用途   正则表达式( ) grep,sed,swk三种命令,以及一些高级语言,是用来在各种方面进行过滤...以“...”结尾行,例如 ds   执行grep “ds$”test.txt得到以下结果   3. ^$ 开头结尾放一起,表示空行   例如grep -n '^$' test.txt(grep-n表示显示行号...)   4. “.”表示任意一个字符,   例如grep -n '.' test.txt (表示空行所有行)   5. “*”表示前一个字符连续出现多次, 可以是0次。   ...要想找出至少有一个3行,应该这么做   6. “.*”表示所有字符(包括空行)   例如grep -n '.*' test.txt可以显示出文件所有行   7. “[]”, 表示匹配括号任意一个字符...,注意, []所有字符都会被当成字符来匹配,比如.,|   例如:grep -n '[0-9]' test.txt,选出了包含数字行   —————————————————————————————

    87410

    Python 基础语法

    Python语言与Perl,CJava等语言有许多相似之处。但是,也存在一些差异。 在本章我们将来学习Python基础语法,让你快速学会Python编程。...; 这里,假定您Python解释器在/usr/bin目录,使用以下命令执行脚本: $ chmod +x test.py # 脚本文件添加可执行权限$ ....在python,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 python标识符是区分大小写。 以下划线开头标识符是有特殊意义。...以单下划线开头(_foo)代表不能直接访问类属性,需通过类提供接口进行访问,不能用"from xxx import *"而导入; 以双下划线开头(__foo)代表类私有成员;以双下划线开头结尾...""" ---- Python空行 函数之间或类方法之间用空行分隔,表示一段新代码开始。类函数入口之间也用一行空行分隔,以突出函数入口开始。

    1.5K60

    正则表达式【Pattern 】

    }]] 所有字母,大写字母除外(减去) 边界匹配器^行开头$行结尾\b单词边界\B单词边界\A输入开头\G上一个匹配结尾\Z输入结尾,仅用于最后结束符(如果有的话)\z输入结尾 Greedy...可以与任何字符(行结束符除外)匹配。 默认情况下,正则表达式 ^ 忽略行结束符,仅分别与整个输入序列开头结尾匹配。...如果激活 MULTILINE 模式,则 ^ 在输入开头行结束符之后(输入结尾)才发生匹配。处于 MULTILINE 模式时, 仅在行结束符之前或输入序列结尾处匹配。...在每个匹配开头,所有捕获输入都会被丢弃。 以 (?) 开头组是纯捕获 组,它不捕获文本,也不针对组合计进行计数。...在此类,嵌入式标志始终在它们出现时候才起作用,不管它们位于顶级还是组;在后一种情况下,与在 Perl 类似,标志在组结尾处还原。

    48540

    Python 基础语法

    Python 语言与 Perl,C Java 等语言有许多相似之处。但是,也存在一些差异。在本章我们将来学习 Python 基础语法,让你快速学会 Python 编程。...这里,假定您Python解释器在/usr/bin目录,使用以下命令执行脚本:$ chmod +x test.py # 脚本文件添加可执行权限$ ....在 Python ,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。Python 标识符是区分大小写。以下划线开头标识符是有特殊意义。...以双下划线开头 __foo 代表类私有成员,以双下划线开头结尾 foo 代表 Python 里特殊方法专用标识, init() 代表类构造函数。...----Python空行函数之间或类方法之间用空行分隔,表示一段新代码开始。类函数入口之间也用一行空行分隔,以突出函数入口开始。空行与代码缩进不同,空行并不是Python语法一部分。

    1K20

    Vim给文件加行号,这通惊为天人操作没sei了!文末天书慎点

    本文展示了如何将行号插入到正文中,或者只插入到段落。此外,还提供了打印行号选项(Vim 可以打印带有数字行,并且不需要文件有数字)。 ?...模式 ^ 匹配每一行开头,\= 表达式使用 printf() 来格式化当前行数字: %-4d 是一个左对齐整数, 如果需要,可以通过在4列宽度添加空格来填充, %4d 是右对齐,%04d....") - line("'<") + 1) 上面的示例格式字符串是“%d”。它插入一个左对齐数字,后跟一个句点,一个制表符TAB。选定范围内每一行都进行了编号。...如果您只想给空行编号(它会找到一行开头,后面跟着一个不是空格字符),请使用以下代码: :'s/^\S/\=printf("%d....下面的替代方法不会给空行编号,也不会跳过行号: :'g/^\S/s/^/\=printf("%d.\t", Inc()) 以上代码需要这里 Inc() 函数。

    2.5K20

    python基础学习教程:Python基础语法

    Python 语言与 Perl,C Java 等语言有许多相似之处。但是,也存在一些差异。 在本章我们将来学习 Python 基础语法,让你快速学会 Python 编程。...这里,假定您Python解释器在/usr/bin目录,使用以下命令执行脚本: $ chmod +x test.py # 脚本文件添加可执行权限 $ ....在 Python ,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 标识符是区分大小写。 以下划线开头标识符是有特殊意义。...以双下划线开头 __foo 代表类私有成员,以双下划线开头结尾 __foo__ 代表 Python 里特殊方法专用标识, __init__() 代表类构造函数。...""" Python空行 函数之间或类方法之间用空行分隔,表示一段新代码开始。类函数入口之间也用一行空行分隔,以突出函数入口开始。 空行与代码缩进不同,空行并不是Python语法一部分。

    1.1K20

    Python 基础语法

    第一个Python程序 Python语言与Perl,CJava等语言有许多相似之处。但是,也存在一些差异。...; 这里,假定您Python解释器在/usr/bin目录,使用以下命令执行脚本: $ chmod +x test.py # 脚本文件添加可执行权限 $ ....在python,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 python标识符是区分大小写。 以下划线开头标识符是有特殊意义。...以单下划线开头(_foo)代表不能直接访问类属性,需通过类提供接口进行访问,不能用”from xxx import *”而导入; 以双下划线开头(__foo)代表类私有成员; 以双下划线开头结尾...""" Python空行 函数之间或类方法之间用空行分隔,表示一段新代码开始。 类函数入口之间也用一行空行分隔,以突出函数入口开始。

    66640

    正则表达式详解

    对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区,所捕获每个子匹配都按照在正则表达式模式从左至右所遇到内容存储。...正如^符号表示开头一样,$符号用来匹配那些以给定模式结尾字符串。...(点,句号)在正规表达式中用来表示除了“新行”之外所有字符。所以模式"^.5$"与任何两个字符、以数字5结尾以其他“新行”字符开头字符串匹配。模式"."...POSIX兼容正则PERL兼容正则“[]之外”“一致”字符: / 有数种用途通用转义符 ^ 匹配字符开头 $ 匹配字符结尾 ?...S 任一空白字符 /w 任一“字”字符 /W 任一“字”字符 /b 字分界线 /B 字分界线 /A 目标的开头(独立于多行模式) /Z 目标的结尾或位于结尾换行符前(独立于多行模式) /z

    1.4K10

    grep中使用d匹配数字不成功原因

    在很多文本编辑器或其他工具里,正则表达式通常被用来检索/或替换那些符合某个模式文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大正则表达式引擎。...RegEx python RegEx Perl regEx 转义 \ \ \ \ ^ 匹配行首,例如'^dog'匹配以字符串dog开头行(注意:awk 指令,'^'则是匹配字符开始) ^ ^...^ ^ $ 匹配行尾,例如:'^、dog$'匹配以字符串 dog 为结尾行(注意:awk 指令,'$'则是匹配字符结尾) $ $ $ $ ^$ 匹配空行 ^$ ^$ ^$ ^$ ^string...),匹配以 frog 开头单词 \< \< 不支持 不支持(但可以使用\b来匹配单词,例如:'\bfrog') \> 匹配单词,例如:'frog\>'(等价于'frog\b '),匹配以 frog 结尾单词...\B 匹配单词边界,例如:'er\B' 能匹配 "verb" 'er',但不能匹配"never" 'er' \B \B \B \B \b 匹配一个单词边界,也就是指单词空格间位置,例如:

    4K10

    PERL学习笔记---正则表达式应用

    \n”; } 如果不使用/s,那么上述模式将不能被匹配上,因为这两个字符不在同一行。 符号^(脱字字符◆)表示在字符开头进行匹配,而符号$则表示在结尾◆。...因此,模式/^fred/只匹配字符开头部分; 它不会匹配上manfred man。而/rock$/只在结尾处匹配;其不会匹配上knute rockne。 ◆ 锚定不仅仅针对字符两头。...这同字处理软件“全字匹配(match whole words only)”是类似的。 ◆某些正则表达式实现开头锚定结尾锚定不同,但Perl 均使用\b。...这些单词(words)不是你或者我通常认为那样;它们是\w 类型,由通常字母,数字,下划线组成。\b 将从开头结尾 匹配这些\w 类型字符词界锚定为\B。...$4 是指第四对括号所匹配字符串◆。 ◆这后引用(backreference)\4 在模式匹配引用字符字符串相同。

    68930

    Markdown Rules 详解

    参数: "br_spaces":指定在行尾可以添加空格数目,空格数目建议大于等于2,如果小于2,会默认为0,也就是不允许任何行尾空格 "list_item_empty_lines":字符串,指定在列表是否...document 同一个文档,只能有一个最高级标题,默认也只能有一个一级标题 参数: "level":指定文档最高级标题,默认是1 "front_matter_title":字符串,指定在文档开头...MD028 - Blank line inside blockquote 两个引用区块间不能仅用一个空行隔开或者同一引用区块不能有空行,如果一行没有内容,则这一行要用>开头 MD029 - Ordered...instead of a heading 不能用强调来代替标题 参数: "punctuation":字符串,指定用于结尾标点符号,以此符号结尾强调不会被视为以强调代替标题,默认值是".,;:!?"...":字符串,指定在文档开头front matter标题,这个标题将作为整篇文档最高级标题,另外,如果不想在front matter中指定标题,就把本参数值设置为"" MD042 - No empty

    84430

    网友来稿:何为正则?一正则天下,一文带你看尽精华。

    expression) BREERE区别仅仅是元字符不同: BRE(基础正则表达式)只承认字符有^$.[]*其他字符识别为普通字符:() ERE (扩展正则表达式)则添加了(){}?...+|等 只有在用反斜杠“\”进行转义情况下,字符(){}才会在BRE被当作元字符处理,而ERE ,任何元符号前面加上反斜杠反而会使其被当作普通字符来处理。...^ ^word搜索以word开头内容 $ word$搜索以word结尾内容 ^$ 表示空行,不是空格...代表且只能代表任意一个字符(不匹配空行) \ 转义字符,让有特殊含义字符脱掉马甲,现出原形,.只表示小数点 重复之前字符或文本0个或多个,之前文本或字符连续0次或多次....* 任意多个字符 ^.* 以任意多个字符开头,.

    60400

    Python学习笔记:PEP8常用编程规

    2.行宽:代码行宽限制在79个字符(也可以是99个字符),文档注释限制在72个字符 3.对齐:当圆括号、方括号花括号元素需要换行时,元素应该垂直对齐,而且如果下一条语句需要缩进时,比如if条件语句要执行代码块...:类中方法定义使用一个空行隔开 3.逻辑分段:函数功能组逻辑段使用空行来隔开(视情况灵活运用) 三、import语句 1.import *from xxx import *:这种通配符星号用法应该尽量避免使用...Python内部关键字冲突一种约定 6.双下划线开头:当在类以双下划线开头定义时,调用它时候会在前面加上“_ClassName”,调用类A属性__a时,__a就变成了_A__a,这样子类就不可以随便调用这个属性了..._A__a去访问属性 7.双下划线开头结尾:为模块系统级变量,比如__name__、__init__等,我们自己应该永远避免使用这种命名风格 8.单字符变量:永远要使用O(大写O)、l(小写L)...),也要使用return None显示指明 6.startswith/endswith:判断字符开头前缀或结尾后缀时,使用字符串本身startswith/endswith,不用字符切割来进行判断

    84910

    vim 个性化设置

    Vimscript,一门用于定制Vim脚本语言。它其实就是 Vim命令。,在Vim,保存一个文件使用命令:write(或者缩写 :w)并回车确认。...删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式 " "* vi[ 选择一对 [] 所有字符 "* vi( 选择一对 () 所有字符 "* vi 所有字符..." b 移动光标到上一个单词. " 0 移动光标到本行最开头. " ^ 移动光标到本行最开头字符处. " $ 移动光标到本行结尾处. " H 移动光标到屏幕首行. " M...:12,23s/^/#/ 将从12行到23行行首加入 # 字符 " :%s/fred/joe/igc 一个常见替换命令,修饰符igcperl中一样意思 "..." :help /\{-} : 看看关于 贪婪数量符 帮助 " :s/fred/a/g : 替换fred成register a内容,呵呵 " 写在一行里复杂命令 "

    1.5K20

    Shell文本处理三剑客之grep

    (BRE) -P,--perl-regexp 模式是Perl正则表达式 -e,--regexp=PATTERN 使用模式匹配,可指定多个模式匹配 -f,--file=FILE 从文件每一行获取模式 -i...-C,--context=NUM 打印匹配前后几行 --color[=WHEN], 匹配字体颜色 示例: 1) 输出b文件在a文件相同行 # grep -f a b 2) 输出b文件在a...文件空行开头#号行 # grep -E -v "^$|^#" /etc/httpd/conf/httpd.conf 5) 匹配开头不分大小写单词 # echo "A a b c" |xargs -...# seq 1 20 |grep -c -E '[0-9]{2}' 11 9) 匹配b字符开头行 # echo "a bc de" |xargs -n1 |grep '^b' bc 10)...匹配de字符结尾行并输出匹配行 # echo "a ab abc abcd abcde" |xargs -n1 |grep -n 'de$' 5:abcde 11) 递归搜索/etc目录下包含ip

    45020
    领券