最近很多小伙伴都在问Laravel-删除所有包含特定字符串的缓存/Redis键和laravel软删除这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展bash–SED:如何发送一条包
最近很多小伙伴都在问Laravel-删除所有包含特定字符串的缓存/ Redis键和laravel软删除这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展bash – SED:如何发送一条包含特定字符串的行? (内联编辑)、c# – 使用数组检查字符串是否包含特定字符串、c#删除字符串的所有包装div、Linux 查找当前目录下 包含特定字符串 的所有文件等相关知识,下面开始了哦!
本文目录一览:- Laravel-删除所有包含特定字符串的缓存/ Redis键(laravel软删除)
- bash – SED:如何发送一条包含特定字符串的行? (内联编辑)
- c# – 使用数组检查字符串是否包含特定字符串
- c#删除字符串的所有包装div
- Linux 查找当前目录下 包含特定字符串 的所有文件
Laravel-删除所有包含特定字符串的缓存/ Redis键(laravel软删除)
是否可以使用Laravel擦除Redis中与特定字符串匹配的所有键?例如,如果我想忘记包含单词product的键,它将忘记以下键:
laravel:896235872385237588327582370375acaca235325:产品列表laravel:896235872385237588327582370375acaca235325:产品类别
我会在redis服务器上运行它,但是我想知道是否可以通过Laravel直接运行更好的东西:
redis-cli keys "*" | grep "products" | xargs redis-cli DEL
答案1
小编典典为什么不:
public function forget($key_name){ $redis = Cache::getRedis(); $keys = $redis->keys("*$key_name*"); $count = 0; foreach ($keys as $key) { $redis->del($key); $count++; } return $count; }
对于生产环境,应使用SCAN光标[MATCH模式] [COUNT计数]代替“键”
http://redis.io/commands/scan
因为您不想在Redis中有成千上万个键的情况下耗尽内存,也不想通过使用“键”来阻止整个Redis实例。
bash – SED:如何发送一条包含特定字符串的行? (内联编辑)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2002 -j ACCEPT
注释掉我们说的包含的行
2001
我可以简单的运行这个SED命令:
sed -i '/ 2001 /s/^/#/' file
但现在我怎么还原?
在同一行中取消注释?
我试过了
sed -i '/ 2001 /s/^//' file
那不行。
sed -i '/^#.* 2001 /s/^#//' file
c# – 使用数组检查字符串是否包含特定字符串
Console.Write("Name: "); _name = Console.ReadLine(); name = Program.ProperNameMethod( _name); Console.WriteLine(); string[] badWordArray = { "aBadword1","aBadWord2","aBadWord3" }; if (!string.IsNullOrEmpty(name) // Would like to check for the badwordarray aswell)
(更新)
谢谢大家,但是我学习c#只用了大约一个月就无法覆盖lambda或regex了.我稍后会看一下这些代码.
解决方法
string[] badWordArray = { "aBadword1","aBadWord3" }; Boolean isBadWord = badWordArray .Any(badWord => name.IndexOf(badword,StringComparison.OrdinalIgnoreCase) >= 0);
或者,如果您验证当前的文化
Boolean isBadWord = badWordArray .Any(badWord => name.IndexOf(badWord,StringComparison.CurrentCultureIgnoreCase) >= 0);
Paranoic案例涉及使用这样的正则表达式:
string[] badWordArray = { "aBadword1","aBadWord3" }; // Nasty user wants to be rude but pass typical filters... String name = "A- Bad..WORD..1 !!!"; String line = Regex.Replace(name,@"\W",""); Boolean isBadWord = badWordArray .Any(badWord => line.IndexOf(badWord,StringComparison.OrdinalIgnoreCase) >= 0);
c#删除字符串的所有包装div
如果您只想删除字符串开头和结尾的 div 标签,保留中间的 div 标签以及任何其他 HTML 标签,那么这应该可行:
private static string RemoveWrapingDiv(string originalString)
{
var openingTag = "<div>";
var closingTag = "</div>";
var processedString = originalString;
while (processedString.StartsWith(openingTag))
{
processedString = processedString.Substring(openingTag.Length,processedString.Length - openingTag.Length - closingTag.Length);
}
return processedString;
}
,
假设 HTML 是有效的,我想出了以下内容:
public void test()
{
string result = "<div><div><div><div><p>This is a test</p><ul><li>a</li><li><div>b</div></li><li>c</li></ul></div></div></div></div>";
while (true)
{
if (result.StartsWith(@"<div>") && result.EndsWith(@"</div>"))
{
result = result.Remove(0,5);
int i = result.LastIndexOf(@"</div>",StringComparison.Ordinal);
result = result.Remove(i,6);
}
else
{
break;
}
}
}
Linux 查找当前目录下 包含特定字符串 的所有文件
使用 Linux 经常会遇到这种情况:只知道文件中包含某些特定的字符串,但是不知道具体的文件名。需要根据“特定的字符串”反向查找文件。
示例(路径文件如下):
./miracle/luna/a.txt
a.txt 文件中的内容如下
Hello, World!
查找当前目录下,包含“Hello”字符串的所有文件
【方式1】(其中,r 表示递归, n 表示查询结果显示行号):
grep -rn "Hello" ./
效果如下:
【方式2】
find ./ -name "*.*" | xargs grep "Hello"
效果如下:
【方式3】(-l 表示只显示文件名)
find . | xargs grep -ri "Hello"
或
find . | xargs grep -ri "Hello" -l
效果如下:
【方式4 】(推荐,更为通用!)
如果不知道文件所在的大致目录,知道文件的类型(例如文本类型 txt),可以在root根目录 / 下根据特定字符串进行查找:
find / -type f -name "*.txt" | xargs grep "Hello"
效果如下:
PS:
前面三种方式使用场景:知道文件的大概目录(缩小查找范围)
最后一种方式,更为通用,最好知道文件的类型。
关于Laravel-删除所有包含特定字符串的缓存/ Redis键和laravel软删除的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于bash – SED:如何发送一条包含特定字符串的行? (内联编辑)、c# – 使用数组检查字符串是否包含特定字符串、c#删除字符串的所有包装div、Linux 查找当前目录下 包含特定字符串 的所有文件的相关信息,请在本站寻找。
本文标签: