将一行语句组合成一个脚本

时间:2015-03-31 17:40:41

标签: shell awk

我试图让3个单独的单行命令一个接一个地运行,但是如果它们都在同一个shell.sh文件中,则无法使它工作。

awk 'Command #1 1' input.txt > output.txt
awk 'Command #2 1' input.txt > output.txt
awk 'Command #3 1' input.txt > output.txt

上面是我将在shell.sh中提供的一个示例,我只能使用3个单独的文件来实现这一点,当我需要这些文件在单个文件中工作时。

在我的示例中,我希望单个输入文件对其运行3个命令以生成单个输出文件。

我不确定我是否能够使用>>|&&进行合并,但所有尝试都会导致效果不佳。

2 个答案:

答案 0 :(得分:2)

您需要使用输出重定向运算符>>

awk 'Script #1 1' input.txt > output.txt
awk 'Script #2 1' input.txt >> output.txt
awk 'Script #3 1' input.txt >> output.txt

答案 1 :(得分:1)

您的尝试是覆盖每个上一个命令的输出文件,因此它看起来好像只有最后一个命令成功。

如果您想连续运行三个Awk脚本,那么您正在寻找一个管道。

awk 'Command #1 1' input.txt |
awk 'Command #2 1' |
awk 'Command #3 1' > output.txt

但是,当然,您可能希望将它们组合成一个脚本。

awk 'Command #1
     Command #2
     Command #3 1' input.txt> output.txt

不幸的是,您的问题过于笼统,无法提供有关这是否可行且有用的具体建议。