bash - 行 sed/awk 的修改副本

标签 bash sed awk

我正在尝试在原始行之后插入行的修改副本。

这是我的文件:

random
N:John Doe
random
N:Jane Roe
random
random
N:Name Sirname
random

这是我的文件需要的样子:

random
N:John Doe
FN:John Doe
random
N:Jane Roe
FN:Jane Roe
random
random
N:Name Sirname
FN:Name Sirname
random

对此有什么想法吗?似乎找不到合适的 sed/awk 组合...

最佳答案

sed -n ' p; s/^N:/FN:/p' original.txt

这会产生:

random
N:John Doe
FN:John Doe
random
N:Jane Roe
FN:Jane Roe
random
random
N:Name Sirname
FN:Name Sirname
random

它的工作原理如下。我们调用 sed -n 这意味着,默认情况下,它不会打印任何行。然后,我们给它两个命令。第一个 p 是打印现有行未修改。第二个,s/^N:/FN:/p,告诉它尝试用 FN: 替换任何前导的 N:,并且,如果替换成功(意味着该行确实以 N: 开头),则打印修改后的版本。

关于bash - 行 sed/awk 的修改副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21492559/

相关文章:

regex - bash 正则表达式 : Search for a maximum of 3 consecutive vowels

bash - 使用sed插入文件内容

linux - 使用 sed 重命名多个文件

linux - 如何从 java -version 中删除第 3 行?

awk:当记录中的第一个字段相同时并排打印行

awk - gawk 和 mawk 的区别(列宽)

python - 在 Python 中实现类似 shell 的管道性能

linux - 通过 SSH 连接代理命令

linux - 为什么 '/./,/^$/!d'在sed中有任何作用?

bash - 按任何字段中的最高值排序