【问题标题】:How to Find and Print using Shell Script in AIX Server?如何在 AIX 服务器中使用 Shell 脚本查找和打印?
【发布时间】:2013-05-11 11:37:00
【问题描述】:

我有一个大文件,内容如下:

dn: CN=Brower\, Stephen,OU=Recipients,OU=Mailboxes,OU=Exchange2000,DC=raritanval,DC=edu
changetype: modify
replace: department
department: Computer Science
-

dn: CN=Brower\, Stephen,OU=Recipients,OU=Mailboxes,OU=Exchange2000,DC=raritanval,DC=edu
changetype: modify
replace: description
description: Computer Science

-

我想创建多个文件,其输出从“dn:”到“-”,这意味着它将从 dn: 开始搜索,并将打印到 - 在一个文件中,依此类推。并且还需要为将要创建的文件具有一些标准名称。

【问题讨论】:

    标签: aix


    【解决方案1】:

    awk 脚本会很有帮助。由于您在 AIX 上运行,您可能希望安装 GNU awk(或 gawk)。 gawk 比 vanilla awk 有更多有用的功能。

    awk 'BEGIN{fnum=1;}($1=="dn:"){flag=1; x=""}(flag==1){x=x "\n" $0}($1=="-"){flag=0; fn="file" fnum; print x > fn; close (fn); fnum++;}'
    

    这会将数据转储到按顺序编号为 file1、file2、...的文件中

    [编辑以反映 OP 的需求并添加 close(fn)]

    【讨论】:

    • 我需要某种脚本,使用一些简单的方法来执行我提到的上述内容。请帮助我实现这一目标。
    • 但是我拥有的文件,最后两个逗号分隔的名称是相同的,所以在我的情况下,只有一个文件与使用上述命令生成的原始文件相同。如果我做错了什么,请告诉我。
    • 您能提供更多信息吗?查看您提供的两条记录,它们最后具有相同的字段。例如,您列出的两条记录都以“DC=raritanval,DC=edu”结尾。但是,它们在“替换:”字段中确实有所不同。这就是你所有记录的结构吗?具有相同结尾字段(例如,“DC=raritanval,DC=edu”)的任何两条记录是否会有不同的“replace:”字段?
    • dn: CN=Kletz\, Pattiann,OU=Recipients,OU=Mailboxes,OU=Exchange2000,DC=raritanval,DC=edu 更改类型:修改替换:标题标题:助理教授-商务 - dn : CN=Krov\, Kathleen,OU=Recipients,OU=Mailboxes,OU=Exchange2000,DC=raritanval,DC=edu changetype: modify replace: department department: Nursing - 所以我提供了更多数据,例如,我想要这 5 个从 dn: upto 开始的行 - 应该写在一些不同的文件中,比如 file1 shud 包含 5 行,file2 shud 接下来包含从 dn: to 开始的 5 行 - 忽略空格。我希望我能清楚地提供细节。
    • 所以最后会生成很多文件,文件名可以是任何文件,file1,file2 之类的。正如我之前提到的,每个文件将包含 5 行。所以,如果找到 dn:它会写到 - 在不同的文件中。然后再次开始接下来 5 行的循环,依此类推。请帮忙提供方法。
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 2017-06-24
    • 2013-02-05
    • 2010-11-16
    • 1970-01-01
    • 2015-04-21
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多