Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

formatting string 1

Status
Not open for further replies.

ecmanfr

Technical User
May 14, 2005
9
FR
In a xml file there are

<desc lang="fr"> qwerty </desc>

I would like the string between flags ('qwerty') is less or equal to 1024 caracters.

Thank for your answers

Ecman

Sorry for my english
 
Code:
{
  if ( match( $0, /<desc +lang[^>]*"fr">[^<]*<\/desc>/ ) )
  { temp = substr( $0, RSTART, RLENGTH )
    match( temp, />.*</ )
    string = substr( temp, RSTART+1, RLENGTH-2 )
    print string
  }
}
 
Shorter:
Code:
{
  if ( gsub( /.*<desc +lang[^>]*"fr">|<\/desc>.*/, "" ) )
    print
}
 
ok, thank you for your answers

but i have a problem when the string (qwerty) have a return line character. The match no detect the <desc lang="fr"> qwerty RLCharacter Qwerty </desc>.
Are you a solution ?

 
The match no detect the <desc lang="fr"> qwerty RLCharacter Qwerty </desc>.
I.e.,
[tt]
<desc lang="fr"> qwerty
Qwerty </desc>.
[/tt]

Code:
BEGIN { RS = ">" ; FS = "</desc" }
NF > 1 { s = s $1
  printf "%d: %s\n", length(s), s ; on = 0 }
on  { s = s $0 RS }
/lang="fr"$/  { on = 1 ; s = "" }
 
Ok, I try to explain in more details
This is my file :

<programme start="20050605162500 +0200" stop="20050605175500 +0200" showview="1996056" channel="C3.telepoche.com">
<title>Qui mange qui ?</title>
<desc lang="fr">Inspectrice de l'hygiène et de la répression des fraudes, Rose n'a pas pardonné à son ancien amant, Léon, de lui avoir caché l'existence de son épouse. Remontée à bloc, elle décide de mettre un terme à l'excellente réputation dont jouit, à juste titre, son restaurant. Elle commence par une attaque en règle de ses fournisseurs -maraîcher et boucher- dont les chambres froides laissent passablement à désirer. Ces quelques amuse-bouche réglés, elle cingle vers le lieu du crime : Le Canard joli. Martial, maître des cuisines, y recueille son oncle René, tout juste sorti de prison. Le vieux monte-en-l'air veut se racheter une conduite : il se déclare ½nologue averti, et se fait fort d'assurer la sommellerie. Martial accepte cette proposition incongrue. Ses préoccupations sont ailleurs : il attend l'étoile qui viendra récompenser ses talents de chef, une aubaine pour Rose qui trouve là de quoi assouvir sa ranc½ur. Elle s'installe à table et déploie des trésors de mauvaise foi pour condamner une cuisine qu'elle juge en son for intérieur exceptionnelle. Martial et René flairent le mauvais coup. Ce dernier insiste pour liquider l'empêcheuse de cuisiner en rond. Mais son neveu ne l'entend pas de cette oreille. Il semble bouleversé par les charmes de cette experte ès-gastronomie...
Critique : Cette comédie fraîche et originale se savoure avec plaisir. Catherine Jacob se surpasse dans le registre de l'enquiquineuse et Julien Guiomar campe un très réjouissant vieux bandit.</desc>
<desc lang="fr">Une inspectrice de l'hygiène s'acharne contre le restaurant de son ancien amant qui l'a trahie.</desc>
<credits>
<director> Dominique Tabuteau</director>
<actor>Catherine Jacob</actor>
<actor>Roger Mirmont</actor>
<actor>Julien Guiomar</actor>
<actor>Ludwig-Stanislas Loison Robert</actor>
<actor>Anna Gaylor</actor>
<actor>Isabelle Leprince</actor>
<actor>Arnaud-Didier Fuchs</actor>
<actor>Guilhem Pellegrin</actor>
<actor>Sylvie Herbert</actor>
<actor>Rémy Kirch</actor>
<actor>Rémy Roubakha</actor>
<actor>Bernard Pinet</actor>
<actor>Catherine Blanchard</actor>
</credits>
<date>1997</date>
<category lang="fr">Téléfilm</category>
<category lang="fr">comédie</category>
<length units="minutes">89</length>
<star-rating>
<value>2/4</value>
</star-rating>
</programme>

And I would like all in <*>bla bla bla </*> are less than 1024 characters. And to be careful the return line.

Thank to futurelet for you work

Ecman
 
Code:
BEGIN { RS = ">" ; FS = "</desc" }
NF > 1 { s = s $1
  ## If you want to convert newlines to spaces,
  ## uncomment next line.
  # gsub( /\n/, " ", s )
  if ( length( s ) < 1024 )
    print s
}
on  { s = s $0 RS }
/lang="fr"$/  { on = 1 ; s = "" }
 
Shorter:
Code:
BEGIN { RS = ">" ; FS = "</desc" }
NF > 1 { s = s $1
  ## If you want to convert newlines to spaces,
  ## uncomment next line.
  # gsub( /\n/, " ", s )
  if ( length( s ) < 1024 )
    print s
}
{ s = s $0 RS }
/lang="fr"$/  { s = "" }
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top