尽管它涵盖了您所问的大部分内容,但我将添加到 jeb 的答案中。
这三个命令是从 Linux 移植的模拟命令,它们执行以下操作:
sed
:用于过滤和转换文本的流编辑器。
grep
:用于打印与图案匹配的线条的工具。
cut
: 用于剪切文件每一行的选定部分的工具。
我建议您通过man <command name>
在 Linux 中键入或在谷歌上搜索相同的字符串(例如,“ man grep ”)来了解更多关于这三个命令的信息。
另外,查找正则表达式。尽管对于初学者来说它们通常不清楚,但它们是表示模式的一种常见且紧凑的方式。
关于问题中的具体用法:
sed "s#""#'#g"
对于每一行,这会将所有引号 ( ""
) 替换为撇号 ( '
)。
grep -o "class='name[^>]*"
这仅打印以 开头class='name
但没有以下内容的行的一部分>
。
sed -n "/id=/p"
默认情况下,Sed 打印每一行。另一方面,sed -n "<some pattern> /p"
仅打印与指定模式匹配的行。在这种情况下,Sed 只打印包含id=
.
grep -o "surname=[^>]*"
这仅打印以 开头surname=name'
但没有以下内容的行的一部分>
。
cut -d"'" -f2
这会将每一行解析为由撇号 ( ) 分隔的连续字段'
,并选择第二个。
一切都是管道式的,这意味着每个命令的输出都用作右侧下一个命令的输入。“input.txt”的内容被输入到 Sed 命令中,然后它的输出被输入到 grep 命令中,依此类推。最终输出显然会打印到一个名为“output.txt”的新文件中。
是的,就像 jeb 提到的那样,这看起来是一个尴尬的解决方案,因为这里的所有事情都可以单独完成sed
,大概只需要一两个命令。