bash - 使用 sed 在捕获组内替换

标签 bash awk sed replace

我正在尝试在一些包含短语定界的文本中使用 word2vec,例如

I <phrase>like green beans</phrase> in my tortillas.

在将文本输入到 word2vec 之前,我需要输入:

I __like_green_beans__ in my tortillas.

我一直在尝试使用 sed 进行替换。通过做

sed -e 's@<phrase>\(.*\)</phrase>@__\1__@g' myfile.txt 

我可以去掉分隔符,但我还没有找到替换捕获组中空格的方法。

如果可以使用 sed 有什么想法吗?

最佳答案

你可以试试这个sed

sed -E ':A;s/(>[^ ]*) ([^<]*<)/\1_\2/;tA;s/<[/]*phrase>/__/g'

关于bash - 使用 sed 在捕获组内替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48754522/

相关文章:

bash - sed将字符串替换为单引号

linux - 为什么在特定文件夹中找不到命令?

bash - 如何在 AWK 中一次删除多个列和字段分隔符?

xml - Unix 中的脚本从文件中删除 XML 标签和内容

sql - 将 SQL 插入脚本转换为 CSV 格式

bash - 使用 sed(或其他东西)解析进度

bash - 如何在 Bash 中循环直到达到可用磁盘空间限制?

linux - 无法从 bash 脚本中获取带有空格的路径?

Linux 在特定部分中搜索和替换

regex - 在linux shell脚本中如何找到1个字符串并删除前面的4行