Sponsored Content
Top Forums Shell Programming and Scripting Counting the number of pipes in line Post 302248461 by treesloth on Friday 17th of October 2008 05:41:12 PM
Old 10-17-2008
I hope you don't mind a quick answer that can certainly be improved. I'm afraid I've been a bit unwell, so please pardon the rather brutish nature of the script, and the tcsh. Hopefully, since this can be placed in its own script file, the particular shell won't matter. First, note this relationship:

(# of | in line) = (number of fields in line) -1

So, for example, there are 3 fields and 2 pipes in:

a|b|c

So, simply expect values 1 higher than the terms in which you expressed your problem; a metric boatload of files with 14 fields, and 1 with 15.


Code:
#!/bin/tcsh

foreach file ( `ls | grep -v fieldcounter` )
set ext = `echo $file | awk -F. '{print $NF}'`
echo -n $file
if ( $ext == "gz" ) then
     set fields = `zcat $file | head -n 1 | awk -F\| '{print NF}'`
else
     set fields = `cat $file | head -n 1 | awk -F\| '{print NF}'`
endif
echo " has fieldcount:  $fields"
end

I named this script "fieldcounter". You can call it whatever you like, but make sure to change "fieldcounter" in the foreach line accordingly. There are a couple of assumptions. First, I assume that everything in the directory is a file (as opposed to a directory, say); second, that you want to examine everything in the directory; third, that the first line of each file is just data, and isn't a special, differently-formatted header line. Each of these assumptions is easy enough to change and account for, but they are there nonetheless.

So, give it a shot... if there are, in fact, errors in my assumptions, or some other factor, let us know. I'm certain we can piece something together that'll work.

Last of all, this is written as an infrequently-applied solution. If you're going to do this often, something faster would be beneficial.
 

10 More Discussions You Might Find Interesting

1. Linux

counting the number of lines

Hello, I have afile which begins with a few urls on multiple lines and then there is listing of some information on separate lines. The listing begins with the word Name on a given line followed by teh actual list. I want to count the number of lines in this file after the line having... (6 Replies)
Discussion started by: nayeemmz
6 Replies

2. UNIX for Dummies Questions & Answers

Counting number of occurences

Hi All, I have to count the number of occurences of the character " ; " in a given line. I had used the following awk command to achieve the same echo $KOP.dat|awk '{split($1,my,";"); for(i in my)c++ }END{print c-1}' My file KOP.dat had the following data ... (1 Reply)
Discussion started by: kingofprussia
1 Replies

3. Shell Programming and Scripting

counting the number of lines - again

Hi all, I use bash shell and I have a problem with wc. I would like to determine the number of lines in a file so I do wc -l filename but I don't want to get the filename again I just would like to have the number of lines and use it in a variable. Can anybody help? Thank you, (7 Replies)
Discussion started by: f_o_555
7 Replies

4. Shell Programming and Scripting

counting the number of occurences

say i've got a text file with >10million sequences: ssss ssss tttttt uuuuuu uuuuuu uuuuuu ... I'd like to convert the file so that the output will report the number of occurence right by each sequence: 2 ssss 2 ssss 1 tttttt 3 uuuuuu 3 uuuuuu 3 uuuuuu .... (3 Replies)
Discussion started by: johjoh
3 Replies

5. Shell Programming and Scripting

counting number of sentence

Hi all I want to count total numbers of sentences separated by fullstop (.) in different files under a directory at one go. Any help is appreciated. (3 Replies)
Discussion started by: my_Perl
3 Replies

6. UNIX for Dummies Questions & Answers

How to read contents of a file from a given line number upto line number again specified by user

Hello Everyone. I am trying to display contains of a file from a specific line to a specific line(let say, from line number 3 to line number 5). For this I got the shell script as shown below: if ; then if ; then tail +$1 $3 | head -n $2 else ... (5 Replies)
Discussion started by: grc
5 Replies

7. Shell Programming and Scripting

Counting the number of characters

Hi all, Can someone help me in getting the following o/p I/p:... (7 Replies)
Discussion started by: Sri3001
7 Replies

8. Shell Programming and Scripting

Count the pipes "|" in line and delete line if count greter then number.

Hello, I have been working on Awk/sed one liner which counts the number of occurrences of '|' in pipe separated lines of file and delete the line from files if count exceeds "17". i.e need to get records having exact 17 pipe separated fields(no more or less) currently i have below : awk... (1 Reply)
Discussion started by: ketanraut
1 Replies

9. Shell Programming and Scripting

Help: Counting values less than a number

So I have several files (35000, to be exact) in the format rmsd_protein_*.dat each with 2 columns and 35000 rows. I would like to count how many values in the second column are less than 3 for each file, and output it into a new file so that it ultimately appears as: 1 14057 2 ... (12 Replies)
Discussion started by: Alexandryne
12 Replies

10. Shell Programming and Scripting

Limit on number of pipes after long-running command?

I'm trying to create a minimal, crude keylogger for X using only a shell script. I was quickly stumped: Why do these two commands entered in a terminal emulator produce output when I type... $ xinput test 6 | grep press $ xinput test 6 | awk '{print $3}' ...but this command produces no... (13 Replies)
Discussion started by: DevuanFan
13 Replies
qmail-pw2u(8)						      System Manager's Manual						     qmail-pw2u(8)

NAME
qmail-pw2u - build address assignments from a passwd file SYNOPSIS
qmail-pw2u [ -/ohHuUC ] [ -cchar ] DESCRIPTION
qmail-pw2u reads a V7-format passwd file from standard input and prints a qmail-users-format assignment file. A V7-format passwd file is a series of lines. Each line has the format user:password:uid:gid:gecos:home:shell where user is an account name, uid and gid are the user id and group id of that account, and home is the account's home directory. pass- word, gecos, and shell are ignored by qmail-pw2u. If you put the output of qmail-pw2u into /var/lib/qmail/users/assign, and then run qmail-newu, qmail-lspawn will obey the assignments printed by qmail-pw2u. WARNING: After changing any users, uids, gids, or home directories in your passwd file, you must run qmail-pw2u and qmail-newu again if you want qmail-lspawn to see the changes. RULES
By default, qmail-pw2u follows the same rules as qmail-getpw. It skips user if (1) uid is zero, (2) home does not exist, (3) user does not own home, or (4) user contains uppercase letters. It then gives each remaining user control over the basic user address and all addresses of the form user-anything. A catch-all user, alias, controls all other addresses. You may change these rules by setting up files in /var/lib/qmail/users: include Allowed users, one per line. If include exists, and user is not listed in include, user is ignored. exclude Ignored users, one per line. If exclude exists, and user is listed in exclude, user is ignored. mailnames Replacement names for users. Each line has the form user:mailname1:mailname2:... The addresses mailname1 and mailname1-ext and mailname2 and so on will be delivered to user. WARNING: The addresses user and user-ext will not be delivered to user unless user is listed as one of the mailnames. A line in mailnames is silently ignored if the user does not exist. subusers Extra addresses. Each line has the form sub:user:pre: sub will be handled by home/.qmail-pre, where home is user's home directory; sub-ext will be handled by home/.qmail-pre-ext. append Extra assignments, printed at the end of qmail-pw2u's output. OPTIONS
-o (Default.) Skip user if home does not exist (or is not visible to qmail-pw2u). Skip user if home is not owned by user. -h Stop if home does not exist. This is appropriate if every user is supposed to have a home directory. Skip user if home is not owned by user. -H Do not check the existence or ownership of home. -U (Default.) Skip user if there are any uppercase letters in user. -u Allow uppercase letters in user. -cchar Use char as the user-extension delimiter in place of -. -C Disable the user-extension mechanism. -/ Use home/.qmail-/... instead of home/.qmail-... SEE ALSO
qmail-users(5), qmail-lspawn(8), qmail-newu(8), qmail-getpw(8) qmail-pw2u(8)
All times are GMT -4. The time now is 12:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy