如何使用Bash或Python移除文本文件每行前后指定数量的字符
如何使用Bash或Python移除文本文件每行前后指定数量的字符
嘿,我来帮你搞定这个需求!你要移除每行前5个字符、后2个字符,不管用Bash还是Python都有简单的实现方法,我给你详细说说:
Bash 方法
方法1:用 sed 命令
sed 是处理文本的利器,一行命令就能搞定:
sed 's/^.\{5\}//; s/..$//' file.txt > desired_file.txt
s/^.\{5\}//:匹配每行开头的5个任意字符(^表示行首,.\{5\}代表5个任意字符),并替换为空,也就是删掉前5个字符。s/..$//:匹配每行结尾的2个任意字符($表示行尾),替换为空,删掉后2个字符。- 最后把处理结果重定向到
desired_file.txt里。
方法2:用 awk 命令
如果习惯用 awk,也可以这样写:
awk '{print substr($0, 6, length($0)-7)}' file.txt > desired_file.txt
substr($0, 6, length($0)-7):$0代表整行内容,substr函数的意思是从第6个字符开始(因为前5个要删掉),截取的长度是总行数减去7(前5个+后2个),正好拿到中间需要的内容。
Python 方法
如果需要更灵活的逻辑(比如后续要加其他处理),用Python脚本更合适:
with open('file.txt', 'r', encoding='utf-8') as infile, open('desired_file.txt', 'w', encoding='utf-8') as outfile: for line in infile: # 先去掉行尾的换行符,避免干扰切片 stripped_line = line.rstrip('\n') # 切片:从第5个索引开始(Python索引从0开始),到倒数第2个索引结束 cleaned_line = stripped_line[5:-2] # 写入处理后的内容,记得加回换行符 outfile.write(cleaned_line + '\n')
- 用
with语句打开文件,会自动帮你关闭文件,不用手动处理,更安全。 - 切片
[5:-2]是Python里的快捷写法:5表示跳过前5个字符(索引0到4),-2表示取到倒数第2个字符之前,正好删掉最后2个字符。 - 如果你的文件有特殊编码,记得加上
encoding='utf-8'避免乱码。
你可以根据自己的习惯选其中一种方法试试,亲测能得到你想要的 desired_file.txt 结果~
备注:内容来源于stack exchange,提问作者eternalodballl
相关产品推荐
相关产品推荐

