我需要在文件周围添加 PHP 标签。使用附加它们很容易
find . -exec echo "?>" >> '{}' \;
Run Code Online (Sandbox Code Playgroud)
但我怎样才能在标签之前加上<?php
?
use*_*686 19
sed -i "1s/^/<?php /" file
Run Code Online (Sandbox Code Playgroud)
(-i
用于就地编辑。)
更便携的版本:
ed file <<!
1s/^/<?php /
wq
!
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以用 perl one-liner 来做到这一点:
perl -0777 -p -i -e "s/^/hey /g" testfile
Run Code Online (Sandbox Code Playgroud)
该-0777
部队的文件啜模式,让整个文件被读作一行。-p
启用循环。-i
启用文件的就地编辑。^
表示一行的开始。
$ cp testfile1 testfile; perl -0777 -p -i -e "s/^/hey /g" testfile; diff testfile testfile1
1c1
< hey asdf
---
> asdf
Run Code Online (Sandbox Code Playgroud)
更新:如评论中所示,您可以选择使用-i.bak
而不是自动生成备份-i
。如果您的命令出现错误,这将提供额外的安全性。参数-i
成为备份的后缀。
更新一堆文件时,您可以使用 运行命令-i.backup${RANDOM}
,检查所有文件是否正确更新,然后删除所有具有该扩展名的文件。
小智 5
你可以使用这样的AWK
过滤器,
awk '{if(NR==1) printf "%s%s","PREFIX",$0; 否则打印 $0}' testfile > newfile
PREFIX
你的 php 前缀字符串在哪里。
小智 5
我还不能发表评论,但要一步完成:
find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;
Run Code Online (Sandbox Code Playgroud)
sed
用于编辑流——文件不是流。使用专门用于此目的的程序,例如ed
或ex
。该-i
选项sed
不仅不可移植,还会破坏您可能遇到的任何符号链接,因为它实际上会删除它并重新创建它,这是毫无意义的。
for file in foo bar baz; do
ed -s "${file}" << EOF
0a
<?php
.
w
EOF
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4036 次 |
最近记录: |