<"$fileVariableName"> 在 csh 中做什么?
What does <"$fileVariableName"> do in csh?
我正在使用 cshell 中的 sed 命令查看现有脚本,除了一个组件外,我了解所有脚本。我已经简化了它以共享一个示例,但在下面,$templateFile 被用作输入,并且“hello”的所有实例都被替换为“world”,一旦完成,它就会输出到输出目录并命名为输出文件名。
sed -e 's:hello:world:g' <"$templateFile"> "$outputDir"/"$outputFileName".txt
但是,我不明白“$templateFile”周围的<>是做什么的?为什么 sed 输入文件必须有 <>?在所有对 sed 的描述中,我找不到关于它可能服务于什么目的的解释,所以我有点困惑。
我知道这是一个简单的问题,但我无法在网上找到答案,如果您能在这里得到任何说明,我将不胜感激。谢谢。
您正在审查的代码对空格的使用具有误导性。更具可读性的版本可能如下所示:
sed -e 's:hello:world:g' <"$templateFile" >"$outputDir/$outputFileName.txt"
像往常一样,<infile
将标准输入从 infile
重定向,>outfile
将标准输出重定向到 outfile
。
与其他重定向一样,所有这些都发生在 sed
开始之前; sed
本身对 shell 如何解释命令的这些部分没有影响或控制。
<
和>
是stream redirection operators。
您不需要 <
运算符,因为 sed
在 sed 命令后接受文件名参数。
如果您打算将 sed 替换结果保存在新文件中,则需要 >
。如果您想“内嵌”保存文件内容,也没有义务使用 >
。使用 GNU sed
,你可以做到
sed -i 's:hello:world:g' "$templateFile"
使用免费 BSD sed
,您可以
sed -i '' 's:hello:world:g' "$templateFile"
检查 sed edit file in place 问题。
你也不需要 -e
,它只是表示下一个参数是 sed 命令。
我正在使用 cshell 中的 sed 命令查看现有脚本,除了一个组件外,我了解所有脚本。我已经简化了它以共享一个示例,但在下面,$templateFile 被用作输入,并且“hello”的所有实例都被替换为“world”,一旦完成,它就会输出到输出目录并命名为输出文件名。
sed -e 's:hello:world:g' <"$templateFile"> "$outputDir"/"$outputFileName".txt
但是,我不明白“$templateFile”周围的<>是做什么的?为什么 sed 输入文件必须有 <>?在所有对 sed 的描述中,我找不到关于它可能服务于什么目的的解释,所以我有点困惑。
我知道这是一个简单的问题,但我无法在网上找到答案,如果您能在这里得到任何说明,我将不胜感激。谢谢。
您正在审查的代码对空格的使用具有误导性。更具可读性的版本可能如下所示:
sed -e 's:hello:world:g' <"$templateFile" >"$outputDir/$outputFileName.txt"
像往常一样,<infile
将标准输入从 infile
重定向,>outfile
将标准输出重定向到 outfile
。
与其他重定向一样,所有这些都发生在 sed
开始之前; sed
本身对 shell 如何解释命令的这些部分没有影响或控制。
<
和>
是stream redirection operators。
您不需要 <
运算符,因为 sed
在 sed 命令后接受文件名参数。
如果您打算将 sed 替换结果保存在新文件中,则需要 >
。如果您想“内嵌”保存文件内容,也没有义务使用 >
。使用 GNU sed
,你可以做到
sed -i 's:hello:world:g' "$templateFile"
使用免费 BSD sed
,您可以
sed -i '' 's:hello:world:g' "$templateFile"
检查 sed edit file in place 问题。
你也不需要 -e
,它只是表示下一个参数是 sed 命令。