PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > comp.unix.shell > Access 1st 12 charectors of a word.
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
comp.unix.shell Using and programming the Unix shell.

Access 1st 12 charectors of a word.

Réponse
 
LinkBack Outils de la discussion
Vieux 22/08/2006, 02h39   #1 (permalink)
Dave Kelly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Access 1st 12 charectors of a word.

I have a list that is 3 words to each line.
I know how to read the file.
I need only the first 12 character of the 3 word. This word is not
guaranteed to be 12 character long. This is where I'm stuck.

Is there an equivalent to the old basic 'left$'? Where do I find it?

What do I search Google for?

TIA Dave
  Réponse avec citation
Vieux 22/08/2006, 02h55   #2 (permalink)
Xicheng Jia
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.

Dave Kelly wrote:
> I have a list that is 3 words to each line.
> I know how to read the file.
> I need only the first 12 character of the 3 word. This word is not
> guaranteed to be 12 character long. This is where I'm stuck.
>
> Is there an equivalent to the old basic 'left$'? Where do I find it?
>


cut -c-12

--
Xicheng

  Réponse avec citation
Vieux 22/08/2006, 02h59   #3 (permalink)
Chris F.A. Johnson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.

On 2006-08-22, Dave Kelly wrote:
> I have a list that is 3 words to each line.
> I know how to read the file.
> I need only the first 12 character of the 3 word. This word is not
> guaranteed to be 12 character long. This is where I'm stuck.
>
> Is there an equivalent to the old basic 'left$'? Where do I find it?


To get the first 12 characters of the third word of every line:

awk '{ printf "%s\n", substr($3,1,12) }'

If you only want lines where the thrid word contains at least 12
letters:

awk 'length($3) >=12 { printf "%s\n", substr($3,1,12) }'

If you want to process it in the shell:

word=qwertyuiopasdfghjklzxcvbnm
mask=????????????
junk=${word#$mask}
printf "%s\n" "${word%"$junk"}"

In bash or ksh93:

printf "%s\n" "${word:0:12}"

For other POSIX shells, there is a substr() function in my book
that can do it. (I may previously have posted it here. All the
scripts from the book are available on line.)

--
Chris F.A. Johnson, author <http://cfaj.freeshell.org>
Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
===== My code in this post, if any, assumes the POSIX locale
===== and is released under the GNU General Public Licence
  Réponse avec citation
Vieux 22/08/2006, 03h55   #4 (permalink)
Ed Morton
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.

Chris F.A. Johnson wrote:
> On 2006-08-22, Dave Kelly wrote:
>
>>I have a list that is 3 words to each line.
>>I know how to read the file.
>>I need only the first 12 character of the 3 word. This word is not
>>guaranteed to be 12 character long. This is where I'm stuck.
>>
>>Is there an equivalent to the old basic 'left$'? Where do I find it?

>
>
> To get the first 12 characters of the third word of every line:
>
> awk '{ printf "%s\n", substr($3,1,12) }'
>


Actually, that'll print the first 12 characters of the 3rd string of
non-blanks. For the OP - what's a "word"? For example, in this context:

Bob says "Hi!".

is <"Hi!".> a word, or <"Hi!">, or <Hi!> or <Hi> or something else?

Ed
  Réponse avec citation
Vieux 22/08/2006, 04h26   #5 (permalink)
Chris F.A. Johnson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.

On 2006-08-22, Ed Morton wrote:
> Chris F.A. Johnson wrote:
>> On 2006-08-22, Dave Kelly wrote:
>>
>>>I have a list that is 3 words to each line.
>>>I know how to read the file.
>>>I need only the first 12 character of the 3 word. This word is not
>>>guaranteed to be 12 character long. This is where I'm stuck.
>>>
>>>Is there an equivalent to the old basic 'left$'? Where do I find it?

>>
>>
>> To get the first 12 characters of the third word of every line:
>>
>> awk '{ printf "%s\n", substr($3,1,12) }'
>>

>
> Actually, that'll print the first 12 characters of the 3rd string of
> non-blanks. For the OP - what's a "word"? For example, in this context:
>
> Bob says "Hi!".
>
> is <"Hi!".> a word, or <"Hi!">, or <Hi!> or <Hi> or something else?


Very true, but the OP did say there were 3 words per line. whatever
a word is.

--
Chris F.A. Johnson, author <http://cfaj.freeshell.org>
Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
===== My code in this post, if any, assumes the POSIX locale
===== and is released under the GNU General Public Licence
  Réponse avec citation
Vieux 22/08/2006, 04h45   #6 (permalink)
Ed Morton
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.

Chris F.A. Johnson wrote:
> On 2006-08-22, Ed Morton wrote:
>
>>Chris F.A. Johnson wrote:
>>
>>>On 2006-08-22, Dave Kelly wrote:
>>>
>>>
>>>>I have a list that is 3 words to each line.
>>>>I know how to read the file.
>>>>I need only the first 12 character of the 3 word. This word is not
>>>>guaranteed to be 12 character long. This is where I'm stuck.
>>>>
>>>>Is there an equivalent to the old basic 'left$'? Where do I find it?
>>>
>>>
>>> To get the first 12 characters of the third word of every line:
>>>
>>>awk '{ printf "%s\n", substr($3,1,12) }'
>>>

>>
>>Actually, that'll print the first 12 characters of the 3rd string of
>>non-blanks. For the OP - what's a "word"? For example, in this context:
>>
>> Bob says "Hi!".
>>
>>is <"Hi!".> a word, or <"Hi!">, or <Hi!> or <Hi> or something else?

>
>
> Very true, but the OP did say there were 3 words per line. whatever
> a word is.
>


Right, but he didn't say if "words" were strictly space-separated (e.g.
is "space-separated" one word or 2 to the OP?).

Ed.
  Réponse avec citation
Vieux 22/08/2006, 04h57   #7 (permalink)
Xicheng Jia
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.


Ed Morton wrote:
> Chris F.A. Johnson wrote:
> > On 2006-08-22, Dave Kelly wrote:
> >
> >>I have a list that is 3 words to each line.
> >>I know how to read the file.
> >>I need only the first 12 character of the 3 word. This word is not
> >>guaranteed to be 12 character long. This is where I'm stuck.
> >>
> >>Is there an equivalent to the old basic 'left$'? Where do I find it?

> >
> >
> > To get the first 12 characters of the third word of every line:
> >
> > awk '{ printf "%s\n", substr($3,1,12) }'
> >

>
> Actually, that'll print the first 12 characters of the 3rd string of
> non-blanks. For the OP - what's a "word"? For example, in this context:
>
> Bob says "Hi!".
>
> is <"Hi!".> a word, or <"Hi!">, or <Hi!> or <Hi> or something else?


No big deal, just trim all non-word with one more pipeline or y|tr
commands.

--
XC

  Réponse avec citation
Vieux 22/08/2006, 06h15   #8 (permalink)
Dave Kelly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Access 1st 12 charectors of a word.

Dave Kelly wrote:
> I have a list that is 3 words to each line.
> I know how to read the file.
> I need only the first 12 character of the 3 word. This word is not
> guaranteed to be 12 character long. This is where I'm stuck.
>
> Is there an equivalent to the old basic 'left$'? Where do I find it?
>
> What do I search Google for?
>
> TIA Dave


I did not provide enough information. My apologies.

I am developing a protected directory on my web server. This directory
will contain a membership list. If you are on the membership list you
can download the membership list.

I want the user name to be the first name and last name with no spaces
in between the 2 words. The password will be the format of the 1st 12
characters of the email address.

The membership is put together with excel, sent to me as a cvs file and
takes the form:

Kelly,Dave,10371 Renfaire
Drive,Plantersville,TX,77363,(936)xxx-1xx0,,,1/30/2001
0:00,daveekelly@xxxxxxxxx.net,R,6/30/2005 0:00,2005-2006,,

code I had started:

#!/bin/bash


main()
{
IFS=, ; while read "LastName" "FirstName" "Address" "City" "State" \
"ZipCode" "HomePh" "BusinessPh" "tmp" "DateJoined" "email" \
"MembershipType" "RenewalDate" "MembershipYear" "Paid" "Notes";

do make_list "$LastName" "$FirstName" "$email" ; done
}
make_list()
{
Email=cut -c12 "$email";
echo >> "$firstname""$lastname","$Email"
}
main

Im currently chasing this error "./pdlist.sh: line 14: -c12: command not
found"
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 23h17.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,13595 seconds with 16 queries