linux - sed ack 搜索/用字符串替换换行符
问题描述
我研究了一些 SO 线程,但没有一个对我的具体情况有所帮助。
我正在尝试将PHP
我从 php 5.6 接管到 php 8.0 的应用程序更新
话虽如此,有很多情况看起来像:
<?
echo ...
function
我需要找到所有直接跟在换行符<?
后面的情况并将其替换为<?php(newline)
根据我读过的SO帖子..我想我接近以下内容:
find ./ -type f -readable -writable -exec sed -i ":a;N;$!ba;s/\<\?\n/\<\?php\n/g" {} \;
我想我很接近了..但我不知道为什么它不会替换<?\n
为该<?php\n
语句sed
在没有换行符的情况下有效。但是根据这篇文章,看起来我做得正确。
我究竟做错了什么?
我尝试过的迭代:
$ find ./ -type f -readable -writable -exec sed -i ":a;N;$!ba;s/\<\?\n/\<\?php\n/g" {} \;
$ find ./ -type f -readable -writable -exec sed -i ":a;N;$!ba;s/<\?\n/<\?php\n/g" {} \;
$ find ./ -type f -readable -writable -exec sed -i ":a;N;$!ba;s/<?\n/<?php\n/g" {} \;
$ find ./ -type f -readable -writable -exec sed -i ":a;N;$!ba;s/<?\n\r/<?php\n/g" {} \;
$ find ./ -type f -readable -writable -exec sed -i ":a;N;$!ba;s/<?\r\n/<?php\n/g" {} \;
解决方案
sed 命令本身可能很简单:
sed -i 's/<?$/<?php/'
将其与 find 粘合在一起,它可能对您有用。
$
是匹配行尾的锚点,您也可以考虑使用^
将匹配锚定到开头:
s/^<?$/<?php/
推荐阅读
- python - 根据另一列的条件计算价格变化和价格的累积百分比变化
- python - Keras自动编码器的输入和输出层不匹配,无法运行模型
- php - 试图在laravel中获取非对象问题的属性
- scala - 为什么我在 Spark 中使用 combineByKey 的字数是值总和的两倍?
- javascript - DataTable 列过滤不提取值
- windows - 如何在启动时停止出现命令提示符?
- jbase - 在jbase中找到死代码的好方法是什么?
- python - 如何在 python 中替换 dict 中的字符
- java - 无法解析 commons-collections:commons-collections:2.1
- https - create-react-app:如何使用 https 但带有签名证书?