打印一系列行时,awk 命令中的单词边界不起作用

打印一系列行时,awk 命令中的单词边界不起作用

我正在尝试解析 samba .conf 文件中的特定共享部分...

[国际劳工组织]
    oplocks = 否
    宽链接 = 没有
    可写 = 是
    删除只读=是
    路径 = /LOCALSITE/CMI
    评论=CMI 数据
    写列表 = @cbishare
    有效用户 = @cbishare
    创建模式 = 775
    目录模式 = 775

这是我使用 awk 获取特定部分的代码......

awk '/\[\<CMI\>\]/{flag=1;next}/^$/{flag=0}flag' /etc/samba/smb.conf

当我运行此 awk 命令而不使用代码来获取多行时,{flag=1;next}/^${flag=0}flag我只得到“[CMI]”。

我的代码将所有行都设置为换行符 ($) 是否有问题?

答案1

在考虑了文件中的换行符以及我如何获得测试文件后,我发现了问题所在。我使用的测试文件是通过 samba 配置功能使用 Webmin 从 Windows 计算机复制到计算机的,并将其放在 Windows 共享中,其中有几个人打开了该文件进行检查。将文件复制回 Linux 计算机时,所有换行符都被“^m”替换,这导致 awk 完全找不到任何换行符。使用 tofrodos 包中的 fromdos 命令修复。

在这里找到了... https://stackoverflow.com/questions/811193/how-to-convert-the-m-linebreak-to-normal-linebreak-in-a-file-opened-in-vim

相关内容