Regex 使用sed添加字符
我正在为一个大文件在行尾添加一个字符。每行有3个八位字节的IP网络,以一个周期和一个换行符(\n)结束。我在cygwin工作 i、 e 10.23.34 23.34.45 我正在尝试使用Regex 使用sed添加字符,regex,perl,sed,cygwin,Regex,Perl,Sed,Cygwin,我正在为一个大文件在行尾添加一个字符。每行有3个八位字节的IP网络,以一个周期和一个换行符(\n)结束。我在cygwin工作 i、 e 10.23.34 23.34.45 我正在尝试使用sed为我完成工作;我尝试了以下两个命令,但没有成功: sed 's/\n/1\n/' <filename> sed 's/\n/1\n/g' <filename> sed 's/(.*)/${1}1/' <filename> sed's/\n/1\n/' sed's/\
sed
为我完成工作;我尝试了以下两个命令,但没有成功:
sed 's/\n/1\n/' <filename>
sed 's/\n/1\n/g' <filename>
sed 's/(.*)/${1}1/' <filename>
sed's/\n/1\n/'
sed's/\n/1\n/g'
sed's/(.*)/${1}1/'
我已经让它在perl中与perl-pe的/(.*\)/${1}1/'
请问我做错了什么
谢谢在每行末尾添加一个
foo
:
sed 's/$/foo/' filename > new_filename
替换到位:
sed -i 's/$/foo/' filename
默认情况下,sed逐行工作(因此末尾没有新行) 做你的把戏,但没有任何chekc(所有线必须有一个IP的3个八位组开始点结束),也许som小检查是有用的
sed '/\([0-9]\{1,3\}\.\)\{3\} *$/ s/ *$/1/'
验证该行是否以3个数字(1到3位)结尾,每个数字之间用一个点分隔,最后是一些尾随空格。在本例中,添加
1
并删除尾随空格。您的预期输出是什么?预期输出是10.23.34.1、23.34.45.1等。只需在已采用X.Y.Z格式的每行末尾添加1。谢谢!!我不敢相信我没有意识到我可以用一个s/$/1来做这件事。$
表示行的enf。
sed '/\([0-9]\{1,3\}\.\)\{3\} *$/ s/ *$/1/'