linux - 这个 sed 命令行有什么作用?

标签 linux shell sed

我在书房里看到这条线。

$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 之间的破折号吗?)这意味着任何匹配指定正则表达式的内容都会被删除。此正则表达式表示“az 之间、AZ 之间、 之间的任何字符>09,一个空格或一个下划线,”所以这个命令实质上是从输入中删除任何字母数字字符、空格或下划线,并将剩下的转储到标准输出。测试输出是否为空,然后询问是否有任何不是字母数字、空格或数字的字符,代码就是这样工作的。

我建议将 sed 添加到您应该基本熟悉的工具列表中,因为它在命令行上很常见。

关于linux - 这个 sed 命令行有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232201/

相关文章:

python - 随机访问 C++ 和 Python 的 Linux 内存映射文件性能不佳

linux - 从包含另一个文件中存在的关键字的文件中提取行

android - sed AndroidManifest 版本

shell - 做一个 tail -F 直到匹配一个模式

linux - 正则表达式: Search a word and append a new word at the end of the line

linux - 动态调用参数作为另一个 bash 脚本的 bash 脚本

linux - 我的脚本出现意外的文件结束错误

python - 如果进程挂起/崩溃,如何重新启动 python 脚本

bash - 当我的命令被超时终止时,如何使 "Terminated"消息静音?

linux - 如何在 mac OS 中将主机 ip 地址传递给 docker?