#python #command-line #pipe
#python #командная строка #канал
Вопрос:
Я смутно припоминаю, что мог сделать что-то подобное в Python:
cat foo | python -c "<some python code>" | grep blah | ...
По какой-то причине я не говорю о том, как на самом деле использовать это для запуска кода Python в каждой строке входного файла. Допустим, я хотел бы изменить каждый экземпляр слова «apple» в исходном файле на «orange»; как бы я это сделал?
Ответ №1:
Я не понимаю, как это может быть полезно более одного раза, но вот однострочный:
cat file | grep apple | python -c "for line in __import__('sys').stdin: print line.replace("apple", "orange"),"
Ответ №2:
Существует даже лучший способ, чем sed, который называется pyp. Работает следующим образом:
pip install pyp
echo "apple, banana" | pyp "p.replace('apple', 'orange')"
Ответ №3:
Прочитайте ваши данные из sys.stdin или просто используйте ‘sed’.
Ответ №4:
Если вы используете оболочку Bash
while read -r line
do
line=${line//apple/orange/}
echo "$line"
done < file > tempfile amp;amp; mv tempfile file