【发布时间】:2020-09-26 08:00:57
【问题描述】:
在我的子进程中,我想从我的 txt 文件中的每一行中删除最后 4 个字符。然而,线条的长度不同。我看过很多页面,包括How to shave off last character using sed?,但似乎没有任何正确的做法。我有大约 100 行,前 38 行没有正确删除前 4 个字符。一个看似随机的数字被删除。在第一行之后,之后的所有行都有我预期的输出。如何?现在我有:
subprocess.run(['sed', 's/.\{4\}$//', 'infile.txt'])
文件末尾总是有四个无用字符 - /pid:
3726-weinberg/pid
11717-christopher/pid
11138-span/pid
.
.
.
2932-smith/pid
.
.
.
问题是输出是:
3726-w
11717-chri
111
.
.
.
2932-smith //line 39! all good now
.
.
.
但我期待:
3726-weinberg
11717-christopher
11138-span
.
.
.
2932-smith //line 39! all good now
.
.
.
Sed 不一定是解决方案。如果 truncate 或 cut 或任何其他选项也有效,请随时告诉我。我选择 sed 是因为我在程序的另一部分使用它。
【问题讨论】:
-
请在您的问题中添加示例输入(无描述、无图像、无链接)以及该示例输入所需的输出(无评论)。
-
我已经使用您的准确输入执行了您的准确 python 代码并且它可以工作。此外,在您的描述中,它不是“看似随机的数字被删除”,您的测试输出表明,对于第一行,最后 11 个字符被删除而不是 4 个。
-
请指定您正在运行的 Python 版本。
-
@thanasisp - 你没有得到我得到的输出?为什么会这样?我不明白
-
contactme8359 是的,它有效。可能您必须提供更多信息才能得到答案。可能是整个输入文件,你运行它的环境等等。可能不是代码问题。
标签: python sed subprocess truncate