我在书房里看到这条线。
$temp = 'echo $line | sed s/[a-z AZ 0-9 _]//g'
IF($temp != '')
echo "Line contains illegal characters"
我不明白。 sed 不就是代入函数吗?在代码中,[a-z AZ 0-9 _] 应替换为 ''。我不明白这如何确定 $line 是否包含非法字符。
最佳答案
sed
是一个流编辑器工具,它应用正则表达式来转换输入。命令
sed s/regex/replace/g
从 stdin 读取,每次找到匹配 regex
的内容时,它都会用 replace
的内容替换它。在你的例子中,命令
sed s/[a-z A-Z 0-9 _]//g
有 [a-z A-Z 0-9]
作为它的正则表达式和空字符串作为它的替换。 (你忘记了 A 和 Z 之间的破折号吗?)这意味着任何匹配指定正则表达式的内容都会被删除。此正则表达式表示“a
和 z
之间、A
和 Z
之间、 之间的任何字符>0
和 9
,一个空格或一个下划线,”所以这个命令实质上是从输入中删除任何字母数字字符、空格或下划线,并将剩下的转储到标准输出。测试输出是否为空,然后询问是否有任何不是字母数字、空格或数字的字符,代码就是这样工作的。
我建议将 sed
添加到您应该基本熟悉的工具列表中,因为它在命令行上很常见。
关于linux - 这个 sed 命令行有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232201/