gpt4 book ai didi

python - 在终端中每行的开头插入文件名中的更改字符串

转载 作者:行者123 更新时间:2023-12-01 04:31:13 27 4
gpt4 key购买 nike

我对 bash 的经验为零,所以我在语法上遇到了困难 - 我放弃了在 python 中的尝试,因为我认为它可能更容易。我想提取文件名的一部分(在 .xyz 扩展名之前和前缀之后),将其插入到每一行(从第三行开始)并将输出通过管道传输到新文件。我还想对字符串发生变化的多个文件执行此操作。

我的输入文件如下:

blahblah-0.xyz
blahblah-1.xyz
blahblah-2xyz

到目前为止我知道我能做到:

sed '3,$ s/^/500 /' file-500.xyz > output

这将在每一行插入字符串。但我不想为每个目录执行 100 次!我还从这里尝试了以下操作:awk parse filename and add result to the end of each line :

 for filename in ratio*; do 
num=$(echo $filename | grep -Eo '[^ratio_distances]+\.xyz' | cut -d. -f1)
sed -i "s/\^/\t$num" $filename
done

补充一下,这只是在标准 Mac 终端中执行,因为我在“sed -i”命令方面出现了错误。

编辑:

我让它在 python 中工作,但我仍然有兴趣了解 bash 命令。其他任何 Python 代码都应该在同一件事之后:

import sys
import os
import glob

list_of_files = glob.glob("./blah-blah*.xyz")
for file in list of files:
for i in range (0, 80):
P = 10*i
if str(P) in file:
with open(file, 'r') as infile:
lines = infile.readlines()
lines[:]=lines[2:]
lines = [str(P)+' '+line for line in lines]
with open(file.replace('blahblah','output'),'w') as outfile:
outfile.writelines(lines)
infile.close()
outfile.close()

非常感谢您的见解,安娜

最佳答案

假设您只需在旧文件名前加上“new_”前缀即可创建新文件名:

awk '
FNR==1 { pfx = FILENAME; sub(/.*\./,"",pfx) }
FNR>=3 { $0 = pfx $0 }
{ print > ("new_"FILENAME) }
' ratio*

关于python - 在终端中每行的开头插入文件名中的更改字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32395036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com