Передать файл в качестве аргумента командной строки с временно измененным текстом - PullRequest
0 голосов
/ 07 июня 2018

Вот сценарий:

  • Команда командной строки требует входной файл в качестве аргумента
  • Входной файл, который я хочу использовать, содержит текст, который мне нужна командачтобы игнорировать
  • Я не могу создать временный файл с удаленным неверным текстом

Я пытался использовать sed, использовать регулярное выражение для поиска плохого текста и заменить его ничем.Вывод sed может быть сохранен во временный файл, и этот файл передается команде в качестве аргумента входного файла, однако, как я уже сказал, я не могу создать временный файл.Есть ли а) способ напрямую передать вывод sed в качестве аргумента входного файла, или б) лучший способ сделать это вообще?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Без создания временного файла:

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

или если в качестве аргумента вашей команды абсолютно необходимо указать имя файла:

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

например:

$ cat file
1
2
3
4
5

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

Если это не то, что вам нужно (например, если вам нужно несколько раз проанализировать входной файл в вашей команде), отредактируйте ваш вопрос, чтобы уточнить ваши требования и включить краткий, тестируемый пример ввода и ожидаемый вывод.

0 голосов
/ 08 июня 2018

Это bash -специфичная "замена процесса" :

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

Ваша программа, command в этом случае, увидит имя файла, например /dev/fd63, в качестве своегопараметр.

...