我有一个日志文件,我想在其中搜索一个字符串,并且仅当找到该字符串时才创建一个新文件。我怎样才能做到这一点, sed 在这种情况下似乎很合适。
hee*_*ayl 16
在以下之后进行短路评估grep:
grep -q 'search_pattern' /file && : >/newfile
Run Code Online (Sandbox Code Playgroud)
grep -q在 STDOUT 上不产生任何输出,0如果在文件中找到模式,则仅以退出状态退出
如果找到模式 ( &&),则/newfile通过: >/newfile.
您也可以采用通常的touch /newfile方法,或者bash使用空重定向——>/newfile也可以。
请注意,如果文件已经存在,那么touch只会更改相关的时间戳而不截断文件。并且>/newfile并非所有正在运行的 shell 都支持空重定向(例如在 中zsh),您必须手动发送 EOF。
只是为了好玩:
python3 -c "if 'string' in open('logfile').read(): open('newfile', 'wt')"
Run Code Online (Sandbox Code Playgroud)
where'string'替换为字符串(条件),'logfile'替换为日志文件的路径,'newfile'替换为要创建的文件的实际路径,全部用单引号括起来,如示例中所示。