这个问题与问题“Unix:在每个文件的开头添加一个标签?”。
我如何才能将标签仅添加到不包含标签的文件(例如)<?php
?
答案1
head -n1 文件 | grep -q "^<?php" || sed -i "1s/^/<?php /" 文件
答案2
适当修改的版本我对原始问题的回答:
perl -0777 -p -i -e 's/^/<?php/g unless m/^<\?php/' testfile
使用-i.bak
而不是运行此命令-i
将保留带有 .bak 扩展名的原始文件的备份。
编辑:将匹配从 更新为 ,m/<?php/
使其m/^<\?php/
仅匹配文件的开头,并转义字符?
。
答案3
你想要 || (OR)。如果左手是真的,它就不会理会右手。例如
test "$(grep PATTERN FILE)" || sed COMMAND FILE