将文件作为带有临时更改文本的命令行参数传递

时间:2018-06-07 20:42:23

标签: sed command-line

以下是该方案:

  • 命令行命令需要输入文件作为参数
  • 我想要使用的输入文件中包含我希望命令忽略的文本
  • 我无法创建删除了错误文本的临时文件

我尝试使用sed,使用正则表达式来查找错误文本,并将其替换为空。 sed的输出可以保存到临时文件中,并且该文件作为输入文件参数传递给命令,但是就像我说的那样,我无法创建临时文件。有没有a)直接管道sed输出作为输入文件参数的方法,或b)更好的方法来执行此操作?

2 个答案:

答案 0 :(得分:1)

没有创建临时文件:

sed 's/bad//g' file | command

或者如果绝对需要“文件”名称作为命令的参数:

sed 's/bad//g' file | command -

e.g:

$ cat file
1
2
3
4
5

$ sed 's/3//g' file | awk '{print FILENAME, $0}'
- 1
- 2
-
- 4
- 5

如果那不是您想要的(例如,如果您需要在命令中多次解析输入文件),请编辑您的问题以阐明您的要求,并包括简明,可测试的样本输入和预期输出。

答案 1 :(得分:0)

这是bash - 具体的"流程替换"

command <(sed 's/bad//g' somefile)

您的程序{1}}在此实例中会看到command这样的文件名作为参数。