Pertanyaan Python, pipa, dan opsi "-c" di baris perintah


Samar-samar saya ingat bisa melakukan hal seperti ini dengan Python:

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

Untuk beberapa alasan saya blanking tentang bagaimana benar-benar menggunakan ini untuk menjalankan kode Python pada setiap baris dari file input. Misalnya, katakanlah saya ingin mengubah setiap contoh kata "apel" dalam file asli menjadi "oranye"; bagaimana saya melakukannya?


5
2018-04-21 03:10


asal


Jawaban:


Saya tidak melihat bagaimana ini dapat membantu lebih dari satu kali, tetapi inilah satu baris:

cat file | grep apple | python -c "for line in __import__('sys').stdin: print line.replace(\"apple\", \"orange\"),"

8
2018-04-21 03:19



Thre bahkan lebih baik daripada sed, yang disebut pyp. Bekerja seperti ini:

pip install pyp
echo "apple, banana" | pyp "p.replace('apple', 'orange')"

2
2017-09-25 10:34



Baca data Anda dari sys.stdin atau gunakan saja 'sed'.


0
2018-04-21 03:13



Jika Anda menggunakan shell Bash

while read -r line
do
  line=${line//apple/orange/}
  echo "$line" 
done < file > tempfile && mv tempfile file

0
2018-04-21 03:15