如何查找给定单词前后的文本并输出到不同的文本文件中?

2024-04-25 05:57:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个文本文件:

...
NAME : name-1
...
NAME : name-2
...
...
...
NAME : name-n
...

我希望输出如下文本文件:

name_1.txt : NAME : name-1 ...
name_2.txt : NAME : name-2 ...
...
name_n.txt : NAME : name-n ...

我有grep,sed,awk,shell脚本,python的基本知识。你知道吗


Tags: nametxt脚本shellgrepsed文本文件awk
3条回答

awk救命!你知道吗

$ awk '$1=="NAME"{f=$NF".txt"; print > f; close(f)}' file

这给了

$ head nam*
==> name-1.txt <==
NAME : name-1

==> name-2.txt <==
NAME : name-2

==> name-n.txt <==
NAME : name-n

Solution:

awk '{x=gensub("-","_","g",$3)".txt"; print x" : " $0}' names.csv
name_1.txt : NAME : name-1
name_2.txt : NAME : name-2

**gensub**在这里就可以了。 请阅读下面的字符串函数链接,它应该真的帮助你。string functions in awk

使用GNU sed:

sed "s/\(.*\)\(name-.*\)/echo '\1 \2' > \2.txt/;s/-/_/2e" input-file

  • 把线NAME : name-2变成echo "NAME : name-2" > name-2.txt
  • 然后用产生echo "NAME : name-2" > name_2.txt_替换第二个-
  • e让shell运行在模式缓冲区中构造的命令。你知道吗

这会将空行输出到stdout,但会为每个匹配行创建一个文件。你知道吗

这取决于文件只有与此格式匹配的行。。。但是您可以在这里扩展要点,用n跳过其他行。你知道吗

相关问题 更多 >