Python、管道和“-c”命令行中的选项

发布于 2024-11-02 18:29:29 字数 222 浏览 1 评论 0原文

我依稀记得能够在 Python 中执行类似的操作:

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

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

I vaguely recall being able to do something like this in Python:

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

For some reason I'm blanking on how to actually use this to run Python code on each line of the input file. For instance, say I wanted to change every instance of the word "apple" in the original file to "orange"; how would I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

琉璃梦幻 2024-11-09 18:29:29

我不明白这有什么用处,但这里有一句俏皮话:

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

I don't see how this can be helpful more than once, but here's a one-liner:

cat file | grep apple | python -c "for line in __import__('sys').stdin: print line.replace(\"apple\", \"orange\"),"
内心旳酸楚 2024-11-09 18:29:29

还有比 sed 更好的方法,称为 pyp。工作原理如下:

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

There is even better way than sed, called pyp. Works like this:

pip install pyp
echo "apple, banana" | pyp "p.replace('apple', 'orange')"
◇流星雨 2024-11-09 18:29:29

从 sys.stdin 读取数据或仅使用“sed”。

Read your data from sys.stdin or just use 'sed'.

层林尽染 2024-11-09 18:29:29

如果您使用的是 Bash shell

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

If you are using the Bash shell

while read -r line
do
  line=${line//apple/orange/}
  echo "$line" 
done < file > tempfile && mv tempfile file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文