Bash 如何正确组合查找、sed和;tr替换我所有文件中的换行符

Bash 如何正确组合查找、sed和;tr替换我所有文件中的换行符,bash,sed,tr,Bash,Sed,Tr,我的所有PHP文件当前都已启动 <?php declare(strict_types=1); 您可以使用GNU-sed进行尝试: find . -name *.php -exec sed -i '1{N;s/<?php\s*\n\s*declare/<?php declare/}' {} \; 您可以使用GNU-sed进行尝试: find . -name *.php -exec sed -i '1{N;s/<?php\s*\n\s*declare/<?p

我的所有PHP文件当前都已启动

<?php
    declare(strict_types=1);

您可以使用GNU-sed进行尝试:

find . -name *.php -exec sed -i '1{N;s/<?php\s*\n\s*declare/<?php declare/}' {} \;

您可以使用GNU-sed进行尝试:

find . -name *.php -exec sed -i '1{N;s/<?php\s*\n\s*declare/<?php declare/}' {} \;


您是否只需要使用sed和tr?这在perl中是很容易的,一点也不——如果perl是一个更好的工具,那么它就可以了。但是我从来没有用过它,所以请对我说清楚:)如果你每次都能做
sed'1N,这只是第一行;s/\n/'*
将损坏文件中的所有换行符,而不仅仅是第一行。几乎可以肯定,这是一个错误的工具。如果
只要求您使用sed和tr吗?这在perl中是很容易的,一点也不——如果perl是一个更好的工具,那么它就可以了。但是我从来没有用过它,所以请对我说清楚:)如果你每次都能做
sed'1N,这只是第一行;s/\n/'*
将损坏文件中的所有换行符,而不仅仅是第一行。几乎可以肯定,这是一个错误的工具。如果
注意,这只是GNU使用的。@123谢谢你的信息;你能告诉我从posix sed到哪里转车吗?我很想编辑答案,使其可移植。不带arg的-I标志仅为gnu,我也很确定转义字符类也是。[:空格:]是portable@123恐怕这不是唯一的问题,当将
--posix
标志添加到我的GNU-sed调用时,不会发生匹配(不管-I标志如何)。我将试图指出什么是GNU特有的,但同时我编辑了我的问题,以表明它是GNU特有的。@EdMorton谢谢你提供的信息。不管怎样,大多数人可能会使用GNU答案,所以我还是把便携式答案做好吧!注意这只是GNU使用的。@123谢谢你的信息;你能告诉我从posix sed到哪里转车吗?我很想编辑答案,使其可移植。不带arg的-I标志仅为gnu,我也很确定转义字符类也是。[:空格:]是portable@123恐怕这不是唯一的问题,当将
--posix
标志添加到我的GNU-sed调用时,不会发生匹配(不管-I标志如何)。我将试图指出什么是GNU特有的,但同时我编辑了我的问题,以表明它是GNU特有的。@EdMorton谢谢你提供的信息。不管怎样,大多数人可能会使用GNU答案,所以我还是把便携式答案做好吧!
find . -name *.php.bak -delete