使用sed从特定行复制x个字符的字符串

使用sed从特定行复制x个字符的字符串,sed,Sed,我试图使用sed从日志文件中复制部分字符串 当我想复制整行时,我使用: 对于ls Dir/logs/*NN* 做 完成 在该行的某个位置,是否有类似的命令只接收字符串的一部分 例如,我在日志的第22行有以下字符串,我想将第一个数字复制到另一个文件中,然后将第二个数字复制到一个文件中,以此类推: 阶跃-损耗:0.6844-acc:0.6294-val_损耗:0.5905 提前感谢您的帮助:) Awk将是一个更好的候选人。一次处理所有文件,然后当文件号记录(FNR-每个文件中的行)为22时,将第4个

我试图使用sed从日志文件中复制部分字符串

当我想复制整行时,我使用:

对于
ls Dir/logs/*NN*

完成

在该行的某个位置,是否有类似的命令只接收字符串的一部分

例如,我在日志的第22行有以下字符串,我想将第一个数字复制到另一个文件中,然后将第二个数字复制到一个文件中,以此类推:

阶跃-损耗:0.6844-acc:0.6294-val_损耗:0.5905

提前感谢您的帮助:)


Awk将是一个更好的候选人。一次处理所有文件,然后当文件号记录(FNR-每个文件中的行)为22时,将第4个空格分隔的字段附加到文件1,第7个附加到文件2,然后第10个附加到文件3。

谢谢!很抱歉,但由于我是awk新手,如何在文件名中实现字符串通配符?我的意思是:打印$4>>file1,文件1在我的脚本日志\u nn{I}.csv中的位置?由于通配符的原因,它似乎无法运行:/与您通常的运行方式相同,例如,您对lstanks的运行方式!成功了!不知道为什么直接使用文件名中的通配符会给我带来语法错误,可能我遗漏了一些东西,但我设法通过在相同的循环中实现您的建议来绕过它,如下所示:awk'FNR==22{print$4;print$7;print$10}'Dir/logs/*NN*>file\tmp;cat文件\u tmp>>log\u nn_${i}.csv,出于某种原因,它确实起了作用。无论如何,非常感谢你!伟大的如果解决方案帮助您实现了目标,请投票并接受答案。
   sed -n 3,3p $file >> log_NN.csv
awk 'FNR==22 { print $4 >> file1;print $7 >> file2; print $10 >> file3 }' Dir/logs/*NN*