Home > Archive > AWK > October 2006 > Suppress a field in a record
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Suppress a field in a record
|
|
| testeurFou 2006-10-24, 3:55 am |
| I work on ldif file format.
I want to modify lines seems to
test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
in
test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
bbbbbbb
###################
--- Sample ---
test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
test2: ccccccccccccccccccc
test3: dddddddddddddddddd
test4: eeeeeeeeeeeeeeeeeeeeeee
test11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test12: ccccccccccccccccccc
ccccccccc
test13: dddddddddddddddddd
test21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
test22: ccccccccccccccccccc
test23: dddddddddddddddddd
--- End Sample ---
--- My Source ---
BEGIN {
RS=""
FS="\n"
OFS="\n"
ORS=""
}
{
print "\n\n##### BEFORE : \n"$0 "\n"
for ( i=1; i <=NF; i++) {
if (($i ~ /^ /)&&(i>1)) {
gsub("^ ","",$i)
gsub("\n ","",$i)
gsub("$\n","",$(i-1))
$(i-1) = $(i-1)$i
$(i)=""
}
}
print "##### AFTER : \n"$0 "\n"
}
--- End My Source ---
--- Output ---
##### BEFORE :
test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
test2: ccccccccccccccccccc
test3: dddddddddddddddddd
test4: eeeeeeeeeeeeeeeeeeeeeee
##### AFTER :
test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
bbbbbbb
test2: ccccccccccccccccccc
test3: dddddddddddddddddd
test4: eeeeeeeeeeeeeeeeeeeeeee
##### BEFORE :
test11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test12: ccccccccccccccccccc
ccccccccc
test13: dddddddddddddddddd
##### AFTER :
test11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test12: cccccccccccccccccccccccccccc
test13: dddddddddddddddddd
##### BEFORE :
test21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
test22: ccccccccccccccccccc
test23: dddddddddddddddddd
##### AFTER :
test21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
bbbbbbb
test22: ccccccccccccccccccc
test23: dddddddddddddddddd
--- End Output ---
The matter ? In my result, i have an empty filed. I want to suppress it
easily
I concatenate two fileds in one, but i don't know how i can suppress the
second filed for the output.
Is there an easy way ?
Thx
| |
| Ed Morton 2006-10-24, 7:56 am |
| testeurFou wrote:
> I work on ldif file format.
>
>
> I want to modify lines seems to
>
> test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> bbbbbbbbbbbbbbbb
> in
> test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
bbbbbbb
>
> ###################
> --- Sample ---
> test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> bbbbbbbbbbbbbbbb
> test2: ccccccccccccccccccc
> test3: dddddddddddddddddd
> test4: eeeeeeeeeeeeeeeeeeeeeee
>
> test11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> test12: ccccccccccccccccccc
> ccccccccc
> test13: dddddddddddddddddd
>
> test21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> bbbbbbbbbbbbbbbb
> test22: ccccccccccccccccccc
> test23: dddddddddddddddddd
> --- End Sample ---
>
> --- My Source ---
> BEGIN {
> RS=""
> FS="\n"
> OFS="\n"
> ORS=""
> }
> {
> print "\n\n##### BEFORE : \n"$0 "\n"
> for ( i=1; i <=NF; i++) {
> if (($i ~ /^ /)&&(i>1)) {
> gsub("^ ","",$i)
> gsub("\n ","",$i)
> gsub("$\n","",$(i-1))
> $(i-1) = $(i-1)$i
> $(i)=""
> }
> }
> print "##### AFTER : \n"$0 "\n"
> }
> --- End My Source ---
>
> --- Output ---
> ##### BEFORE :
> test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> bbbbbbbbbbbbbbbb
> test2: ccccccccccccccccccc
> test3: dddddddddddddddddd
> test4: eeeeeeeeeeeeeeeeeeeeeee
> ##### AFTER :
> test1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
bbbbbbb
>
> test2: ccccccccccccccccccc
> test3: dddddddddddddddddd
> test4: eeeeeeeeeeeeeeeeeeeeeee
>
>
> ##### BEFORE :
> test11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> test12: ccccccccccccccccccc
> ccccccccc
> test13: dddddddddddddddddd
> ##### AFTER :
> test11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> test12: cccccccccccccccccccccccccccc
>
> test13: dddddddddddddddddd
>
>
> ##### BEFORE :
> test21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> bbbbbbbbbbbbbbbb
> test22: ccccccccccccccccccc
> test23: dddddddddddddddddd
> ##### AFTER :
> test21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
bbbbbbb
>
> test22: ccccccccccccccccccc
> test23: dddddddddddddddddd
> --- End Output ---
>
>
>
> The matter ? In my result, i have an empty filed. I want to suppress it
> easily
> I concatenate two fileds in one, but i don't know how i can suppress the
> second filed for the output.
> Is there an easy way ?
>
> Thx
It sounds like you're saying you just want to append every line that
starts with a space onto the preceeding line after stripping the leading
spaces. If so, one way to do that would be:
$ awk '
/^ / { sub(/^ */,""); out = out $0; next }
out { print out }
/^$/ { print; next }
{ out = $0; next }
END { if (out) print out }
' file
Regards,
Ed.
|
|
|
|
|