linux - 使用 awk 追加到文件的特定行,保留不匹配的行不变

标签 linux awk text-processing

给定文件test及其内容:

bcd://dfl
sf

我想将额外信息附加到具有特定内容的行(以bcd开头) 虽然以下脚本有效

awk '/bcd*/ {print $0", extra information"} ' test > test.old && mv test.old test

它删除不匹配的行。 (sf)

是否可以将它们保留在输出文件中?

最佳答案

正如在附加 {..}1 的评论中讨论最后会解决你的问题,

awk '/^bcd/ {print $0", extra information"; next} 1' file

因为 /<pattern>/{<action>}应用于匹配 <pattern> 的行 ,其他行按原样打印,{..}1是打印行的always-true-no-matter-what条件。

关于linux - 使用 awk 追加到文件的特定行,保留不匹配的行不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573356/

相关文章:

bash - 如果字符出现少于 20 次,则从列中删除字符

linux - 获取日志文件中的信息

linux - 在本地主机上编辑文件时出现问题

c - 当我拔下串行电缆时,Linux read() 调用不返回错误

linux - 如何在不弹出 CDROM 的情况下在 Linux 中更新 CDROM 大小?

linux - Docker:将返回值设置为环境变量

linux - 使用 grep 和 awk 过滤 ping 结果完全不起作用

python - 正则表达式 - 如何在更大的整个字符串中找到这个特定的字符串片段

data-analysis - 将非结构化医学文本数据处理为 CSV 的工具/方法

linux - 从一个单位为 2 行的文件中随机选择(单位)。