Sponsored Content
Top Forums UNIX for Advanced & Expert Users Merge files with multi-line stanzas Post 302979217 by RudiC on Thursday 11th of August 2016 06:48:28 AM
Old 08-11-2016
This still is far from clear and complete. What should happen if there are several different "stanzas" for the same device, as for hp@JetNL97, that points to ports 9100, 9101, and 9102? And, are there any requirements on the order of output lines?
This is based an some assumptions on my side; it keeps the last device definition encountered and scraps the earlier ones. Plus, it has been developed and tested on my linux system; it may need some adaptions to run on your AIX. Still, I think it comes close to what you posted as the desired output:

Code:
awk '
!/^ /           {IX = $0
                 if (!(IX in TMP)) NIX[++CNT] = IX
                 delete TMP[IX]
                 next
                }
                {TMP[IX] = TMP[IX] RS $0
                }
END             {for (i=1; i<=CNT; i++) print NIX[i]  TMP[NIX[i]]
                }
' file[12]
62_it_91_1_las_ps:
        device = hp@Jetit01
hp@Jetit01:
        file = /var/spool/lpd/pio/@local/dev/hp@Jetit01#hpJetDirect#9100
        header = never
        trailer = never
        access = both
        backend = /usr/lib/lpd/pio/etc/piojetd Jetit01 9100
62_133_3_lbl:
        device = hp@Jet133
hp@Jet133:
        file = /var/spool/lpd/pio/@local/dev/hp@Jet133#hpJetDirect#9102
        header = never
        trailer = never
        access = both
        backend = /usr/lib/lpd/pio/etc/piojetd Jet133 9102
testnl:
        device = hp@JetNL95
hp@JetNL95:
        file = /var/spool/lpd/pio/@local/dev/hp@JetNL95#hpJetDirect#9100
        header = never
        trailer = never
        access = both
        backend = /usr/lib/lpd/pio/etc/piojetd JetNL95 9100
pnr5:
        device = hp@JetNL95
oss-prnsrv2_2:
        device = hp@JetNL97
hp@JetNL97:
        file = /var/spool/lpd/pio/@local/dev/hp@JetNL97#hpJetDirect#9100
        header = never
        trailer = never
        access = both
        backend = /usr/lib/lpd/pio/etc/piojetd JetNL97 9100
62_133_3_zebra:
        device = hp@Jet133
oss-prnsrv2_3:
        device = hp@JetNL97
oss-prnsrv2_1:
        device = hp@JetNL97
oss-prnsrv03_1:
        device = hp@JetNL98
hp@JetNL98:
        file = /var/spool/lpd/pio/@local/dev/hp@JetNL98#hpJetDirect#9100
        header = never
        trailer = never
        access = both
        backend = /usr/lib/lpd/pio/etc/piojetd JetNL98 9100


Last edited by RudiC; 08-11-2016 at 08:06 AM.. Reason: Removed one <TAB> from code and output.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

merge multi-lines into one line

Hi, Can anyone help me for merge the following multi-line logs( the black lines) which beginning with time: into one line. For the line with "-", it needs to be deleted. Please see the red color line. ######################################### time: 20080817073334 dn: uid=ok,ou=nbt... (3 Replies)
Discussion started by: missyou
3 Replies

2. Shell Programming and Scripting

Merge multi-lines into one single line

Hi, Can anyone help me for merge the following multi-line log which beginning with a number and time: into one line. For each line need to delete the return and add a space. Please see the red color line. *****Original Log*****... (4 Replies)
Discussion started by: happyday
4 Replies

3. Shell Programming and Scripting

How to use Perl to merge multi-line into single line

Hi, Can anyone know how to use perl to merge the following multi-line information which beginning with "BAM" into one line. For each line need to delete the return and add a space. Please see the red color line. ******Org. Multi-line) BAM admin 101.203.57.22 ... (3 Replies)
Discussion started by: happyday
3 Replies

4. Shell Programming and Scripting

Help on Merge multi-lines into one single line

Hello, Can anyone let me know how to use Perl script to Merge following multi-lines into one single line... ***** Multi-line***** FILE_Write root OK Tue Jul 01 00:00:00 2008 cl_get_path file descriptor = 1 FILE_Write root OK ... (5 Replies)
Discussion started by: happyday
5 Replies

5. Shell Programming and Scripting

merge files based on line by line

Hi, lets assume the following details.. file 1 has below details abc|1234|xyz abc1|1234|xyz1 abc2|1234|xyz2 and file 2 has below details pqr|124|lskd ebwer|325|dfb wf|234|sdb I need out put shown below abc|1234|xyz pqr|124|lskd abc1|1234|xyz1 ebwer|325|dfb abc2|1234|xyz2... (4 Replies)
Discussion started by: alnhk
4 Replies

6. Shell Programming and Scripting

Merge multi-line output into a single line

Hello I did do a search and the past threads doesn't really solve my issue. (using various awk commands) I need to combine the output from java -version into 1 line, but I am having difficulties. When you exec java -version, you get: java version "1.5.0_06" Java(TM) 2 Runtime... (5 Replies)
Discussion started by: flagman5
5 Replies

7. Shell Programming and Scripting

Multi-line filtering based on multi-line pattern in a file

I have a file with data records separated by multiple equals signs, as below. ========== RECORD 1 ========== RECORD 2 DATA LINE ========== RECORD 3 ========== RECORD 4 DATA LINE ========== RECORD 5 DATA LINE ========== I need to filter out all data from this file where the... (2 Replies)
Discussion started by: Finja
2 Replies

8. Shell Programming and Scripting

Take out First Line and merge all files

Hi Gurus, I have n number of files. Data which is in the files have column headers. I need to take them out and merge into one file. Can you help please? I need to do that little urgent. Thanks (4 Replies)
Discussion started by: raopatwari
4 Replies

9. Shell Programming and Scripting

Multi line log files to single line format

I want to read the log file which was generate from other command . And the output was having multi line in log files for job name and server name. But i need to make all the logs on one line Source file 07/15/2018 17:02:00 TRANSLOG_1700 Server0005_SQL ... (2 Replies)
Discussion started by: ranjancom2000
2 Replies

10. UNIX for Beginners Questions & Answers

Merge multi-lines into one single line using shell script or Linux command

Hi, Can anyone help me for merge the following multi-line log which beginning with a " and line ending with ": into one line. *****Original Log***** 087;2008-12-06;084403;"mc;;SYHLR6AP1D\LNZW;AD-703;1;12475;SYHLR6AP1B;1.1.1.1;0000000062;HGPDI:MSISDN=12345678,APNID=1,EQOSID=365;... (3 Replies)
Discussion started by: rajeshlinux2010
3 Replies
SHTOOL-MKSHADOW.TMP(1)					      GNU Portable Shell Tool					    SHTOOL-MKSHADOW.TMP(1)

NAME
shtool-mkshadow - GNU shtool create shadow tree using symlinks SYNOPSIS
shtool mkshadow [-v|--verbose] [-t|--trace] [-a|--all] src-dir dst-dir DESCRIPTION
This command creates a shadow tree of src-dir under dst-dir by recreating the directory hierarchy of src-dir under dst-dir and by creating the files of src-dir by linking them into the corresponding directories under dst-dir via symbolic links. When src-dir can be reached via relative paths from dst-dir, relative symbolic links are used, too. This high-level functionality is originally designed for developers to create copies of source trees. OPTIONS
The following command line options are available. -v, --verbose Display some processing information. -t, --trace Enable the output of the essential shell commands which are executed. -a, --all Really shadow all files and directories in src-dir. Default is to skip CVS related files and directories, backup files, object files, etc. EXAMPLE
# shell script shtool mkshadow -v -a . /tmp/shadow HISTORY
The GNU shtool mkshadow command was originally written by Ralf S. Engelschall <rse@engelschall.com> in 1998 for Apache. It was later revised and taken over into GNU shtool. SEE ALSO
shtool(1), ln(1). 18-Jul-2008 shtool 2.0.8 SHTOOL-MKSHADOW.TMP(1)
All times are GMT -4. The time now is 03:48 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy