Python, pipe и опция "-c" в командной строке - PullRequest
6 голосов
/ 21 апреля 2011

Я смутно припоминаю возможность сделать что-то подобное в Python:

cat foo | python -c "<some python code>" | grep blah | ... 

По какой-то причине я не понимаю, как на самом деле использовать это для запуска кода Python в каждой строке входного файла.Например, скажем, я хотел изменить каждый экземпляр слова «яблоко» в исходном файле на «оранжевый»;как бы я это сделал?

Ответы [ 4 ]

8 голосов
/ 21 апреля 2011

Я не понимаю, как это может быть полезно несколько раз, но вот одна строка:

cat file | grep apple | python -c "for line in __import__('sys').stdin: print line.replace(\"apple\", \"orange\"),"
2 голосов
/ 25 сентября 2013

Это даже лучший способ, чем sed, называемый pyp . Работает так:

pip install pyp
echo "apple, banana" | pyp "p.replace('apple', 'orange')"
0 голосов
/ 21 апреля 2011

Если вы используете оболочку Bash

while read -r line
do
  line=${line//apple/orange/}
  echo "$line" 
done < file > tempfile && mv tempfile file
0 голосов
/ 21 апреля 2011

Прочитайте ваши данные из sys.stdin или просто используйте «sed».

...