Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python、管道和-";命令行中的选项_Python_Command Line_Pipe - Fatal编程技术网

Python、管道和-";命令行中的选项

Python、管道和-";命令行中的选项,python,command-line,pipe,Python,Command Line,Pipe,我隐约记得在Python中可以做这样的事情: cat foo | python -c "<some python code>" | grep blah | ... catfoo | python-c”“| grep blah |。。。 出于某种原因,我不知道如何实际使用它在输入文件的每一行上运行Python代码。例如,假设我想将原始文件中单词“apple”的每个实例都改为“orange”;我该怎么做呢?从sys.stdin读取数据,或者只使用“sed”。如果您使用的是Bash

我隐约记得在Python中可以做这样的事情:

cat foo | python -c "<some python code>" | grep blah | ... 
catfoo | python-c”“| grep blah |。。。

出于某种原因,我不知道如何实际使用它在输入文件的每一行上运行Python代码。例如,假设我想将原始文件中单词“apple”的每个实例都改为“orange”;我该怎么做呢?

从sys.stdin读取数据,或者只使用“sed”。

如果您使用的是Bash shell

while read -r line
do
  line=${line//apple/orange/}
  echo "$line" 
done < file > tempfile && mv tempfile file
读取时-r行
做
line=${line//apple/orange/}
回音“$line”
完成tempfile&&mv tempfile文件

我不认为这有多大帮助,但这里有一句话:

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

还有比sed更好的方法,叫做sed。工作原理如下:

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