Unix:如何在插入之前检查每个文件开头是否存在标签?

Unix:如何在插入之前检查每个文件开头是否存在标签?

这个问题与问题“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

相关内容