有这么一个文本,共3万行。
<a href="index.php"><img src="images/01.jpg"></a>
<a href="index.php"><img src="images/02.jpg"></a>
<a href="index.php"><img src="images/03.jpg"></a>
<a href="index.php"><img src="images/04.jpg"></a>
<a href="index.php"><img src="images/05.jpg"></a>
<a href="index.php"><img src="images/06.jpg"></a>
<a href="index.php"><img src="images/07.jpg"></a>
<a href="index.php"><img src="images/08.jpg"></a>
<a href="index.php"><img src="images/09.jpg"></a>
<a href="index.php"><img src="images/10.jpg"></a>
想要改成这个样子:
<a href="index.php"><img src="images/01.jpg"></a>
<a href="article.php"><img src="images/02.jpg"></a>
<a href="index.php"><img src="images/03.jpg"></a>
<a href="article.php"><img src="images/04.jpg"></a>
<a href="index.php"><img src="images/05.jpg"></a>
<a href="article.php"><img src="images/06.jpg"></a>
<a href="index.php"><img src="images/07.jpg"></a>
<a href="article.php"><img src="images/08.jpg"></a>
<a href="index.php"><img src="images/09.jpg"></a>
<a href="article.php"><img src="images/10.jpg"></a>
也就是把偶数行的index替换成article。简而言之就是偶动奇不动,隔行替换一个文本里面的内容。
最先想到的是原始生产力:
➤把文件的奇数行、偶数行分别拆分出来。
➤把拆分出来的偶数行的index替换掉。
➤然后合并刚刚拆分的奇数偶数行。
sed命令隔行操作
文本最初的样子:
拆出偶数行,写入文本2中 sed '1d;n;d' 1 > 2 ;cat 2
拆出奇数行,写入文本3中 sed 'n;d' 1 > 3 ;cat 3
替换偶数行命令 sed -i 's/index/article/' 2
现在两个文件是这样的:
按行合并两个文件 paste -d "\n" 3 2
稍微先进一点的办法:
Notepad++正则替换实现隔行操作
这个方法思路比较清奇,但效率不高,主要是windows操作大文本太卡。
查找目标:<a href="index.php"><img src="([^"]+)"></a>\r\n<a href="index.php">
替换为:<a href="index.php"><img src="$1"></a>\r\n<a href="article.php">
思路是这样的:
把下图中阴影选中的部分看作是一个整体:
整体:
把尾巴上的index改成article。
更先进的方法,当程序员刚看到这个需求的时候,不屑的说,这简单,几行代码就搞定,我现在说的方法只要很短的一行命令就能搞定。
sed实现高效隔行(奇偶行)操作
命令: sed 'n;s/index/article/' 1
若是要改变的行是奇数行,就把命令稍微改一下:sed 's/index/article/;n' 1
若文本的总行数不是偶数,命令可能会出问题,怎么办呢??
删掉最后一行,然后用刚才的命令改好后,然后自己手动加上改好的最后一行。
这条命令解释起来比较抽象,要用动态图才能说清楚,但我不会做动图。诸位直接记住命令就行了,反正命令非常短。
原创文章,转载请注明: 转载自笛声
本文链接地址: 只对偶数行或者奇数行进行编辑
10 条评论
好复杂,一个mod就搞定,偷笑
我看到这个第一想法是正则,但是看到你这个,感觉真的大佬!
会写代码就是不一样,我还以为是excel表格呢
还是命令好使呀。
会写代码就是不一样,我还以为是excel表格呢。
excel表格咋实现?
拜个早年
谢谢,祝新年快乐,万事顺利。
看到数学方面的就头晕
这个厉害