bash - 如何根据双引号在 Bash 中的位置将其替换为两个不同的字符?

标签 bash awk sed command-line terminal

假设我有一个如下文件:

""Lorem ipsum dolor sit amet, consectetuer adipiscing elit.""

我想将其转换为德语引文:

"„Lorem ipsum dolor sit amet, consectetuer adipiscing elit.“"

我可以使用 sed 来替换双引号,但如何将前导引号对替换为最后一对引号之外的另一个字符?

最佳答案

这可能对你有用(GNU sed):

sed 's/""/\n/g;s/\n\([^\n]*\)\n/"„\1“"/g' file

""对转换为唯一的分隔符,例如换行符。

然后将唯一分隔符对转换为所需的结果。

注意如果这些对跨越一行,则使用 sed 选项 -z 将文件放入内存中,并使用不同的分隔符,因为换行符将不再是唯一的。

关于bash - 如何根据双引号在 Bash 中的位置将其替换为两个不同的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63153525/

相关文章:

shell - 使用 SED/AWK 将 FASTQ 转换为 FASTA

linux - Grep Next Line Only If Two Lines above Match String 连续

bash - 在 Docker Compose 中执行/bin/bash

regex - crontab 中的 grep 无法正常工作

css - 如何使用shell脚本分别计算所有css、js和html页面的总大小?

regex - 使用 grep 或 sed 从日志中提取电子邮件地址

regex - sed 命令适用于命令行,但不适用于 bash 脚本

bash:对文件的各个部分进行排序

linux - 如何使用 awk 比较和替换字段

linux - 使用 sed/grep 更新匹配行