Count Number Of lines in text files and append values to beginning of file


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Count Number Of lines in text files and append values to beginning of file
# 1  
Count Number Of lines in text files and append values to beginning of file

Hello,

I have 50 text files in a directory called "AllFiles"

I want to make a program that will go inside of the "AllFiles" Directory and count the number of lines in each individual text file. Then, the program will calculate how many more lines there are over 400 in each text file and append this information to the beginning of each text file.

For example, lets say i have 5 files in a directory in the "AllFiles" directory:

file1.txt ---has 500 lines
file2.txt ---has 600 lines
file3.txt ---has 550 lines
file4.txt ---has 700 lines
file5.txt ---has 480 lines


The result of the program should be this:

The first line of file1.txt should read: "there are 400 lines in this file and 100 bonus lines"
The first line of file2.txt should read: "there are 400 lines in this file and 200 bonus lines"
The first line of file3.txt should read: "there are 400 lines in this file and 150 bonus lines"
The first line of file4.txt should read: "there are 400 lines in this file and 300 bonus lines"
The first line of file5.txt should read: "there are 400 lines in this file and 80 bonus lines"

Is there any way that i can do this using the command prompt?

I have tried using 'sed' to do this, but i guess i am missing several necessary libraries. I have GNUwin32. I downloaded the program from gnuwin32DOTsourceforgeDOTnet/packages/sedDOThtm. I downloaded and installed the "completed package, except resources" file and "resources" file.

But, i really have no idea how to use sed. I have tried a couple command prompt line items, but most of them end up in errors.

I don't have visual studio, but i do have the Microsoft office Visual Basic editor, and i have tried a few basic things to do this with no success.

Any ideas would be greatly appreciated.

If it matters, my computers operating system is Windows 7.
# 2  
Since you add 1 line to each and every file, your statement :
Code:
"there are 400 lines in this file and 100 bonus lines"
...

should be :
Code:
"there are 400 lines in this file and 101 bonus lines"
...

# 3  
Hello, motoxeryz125:

You say you've tried a few commands but they failed with errors. It would be helpful to see the commands/code and the errors.

When you say that you're missing libraries, do you mean that the sed executable is missing libraries that it requires to work at all? If so, before the file processing can be done, you need to first install unix tools that work (cygwin perhaps?) or use a windows native alternative. For the latter, you may have Powershell available. If not, it should be a simple download and double-click to install. There's also the command.exe batch language and the windows/dos utilities, but I am not at all familiar with how/if they would work for this case.

Regards and welcome to the forum,
Alister
# 4  
Code:
::==countAppend.bat
::@echo off
for %%a in (*.txt) do call :output "%%a"
del count_tmpfile
goto :EOF

:output
set linesmin=3
findstr /R /N "^" %1 | find /C ":" > count_tmpfile
set /p count= < count_tmpfile
set /A bonus= count - linesmin
echo There are %count% lines in this file and %bonus% bonus lines. > tmp_%1
type %1 >> tmp_%1
move /Y  tmp_%1 %1

Hi Motoxeryz125, i think, the above achieves your requirement.. where you have to change linesmin from 3 to 400 to count the bonus lines..

Last edited by ilan; 04-27-2011 at 11:30 AM.. Reason: add more description
# 5  
For a UNIX system, I like:
Code:
for f in *; do
        l=$(wc -l < "$f")
        [ $l -lt 400 ] && continue
        ed -s "$f" <<-EOED
                0a
                there are 400 lines in this file and $((l-400)) bonus lines
                .
                w
                q
        EOED
done

Caveat: All the leading whitespace from "<<-EOED" to "EOED" must be tab characters, not spaces.

Regards,
Alister

Last edited by alister; 04-28-2011 at 01:26 AM..
# 6  
Thank you

Hello,

@ctsgnb: I wanted the program to count the number of lines in the original file, then, append the number of lines in the original file to the top of the new text file.

So, if the original file had 600 lines, the first line of the new file would say "there are 400 lines plus 200 bonus lines"

even though the new file would actually have 601 lines.

@Ilan and alister: Thank you for your ideas. I will implement them and let you know my results.

Thanks everyone, for your help and responses Smilie
# 7  
Quote:
Originally Posted by alister
For a UNIX system, I like:
Code:
for f in *; do
        l=$(wc -l < "$f")
        [ $l -lt 400 ] && continue
        ed -s "$f" <<-EOED
                0a
                there are 400 lines in this file and $((l-400)) bonus lines
                .
                w
                q
        EOED
done

Caveat: All the leading whitespace from "<<-EOED" to "EOED" must be tab characters, not spaces.

Regards,
Alister
INSERTING LINES WITHIN SCRIPTS

If you want to insert a line at the top (or anywhere) of a file within a shell script, use the ed editor.
Code:
string="hello"
ed << \EOF
e any_file
1i
${string}

Courtesy: http://blogyourfaze.blogspot.com/200...es-within.html
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #668
Difficulty: Medium
IEEE 802.11 is part of the IEEE 802 set of LAN protocols, and specifies the set of media access control (MAC) and physical layer (PHY) protocols for implementing virtual local area network (VLAN) Wi-Fi computer communication in various frequencies.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Compare two files and count number of matching lines

Dear All, I would like to compare two files and return the number of matches found. Example File A Lx2 L1_Mus1 L1Md_T Lx5 L1M2 L1_Mus3 Lx3_Mus Lx9 Lx2A L1Md_A L1Md_F2 File B L1_Mus3 L1_Mus3 (3 Replies)
Discussion started by: paolo.kunder
3 Replies

2. Shell Programming and Scripting

Append Multiple files with file name in the beginning of line

Hi, I have multiple files having many lines like as bvelow: file Name a.txt abc def def xyz 123 5678 file Name b.txt abc def def xyz 123 5678 I would like to append files in the below format to a new file: file Name c.txt (7 Replies)
Discussion started by: rramkrishnas
7 Replies

3. Shell Programming and Scripting

How to count number of files in directory and write to new file with number of files and their name?

Hi! I just want to count number of files in a directory, and write to new text file, with number of files and their name output should look like this,, assume that below one is a new file created by script Number of files in directory = 25 1. a.txt 2. abc.txt 3. asd.dat... (20 Replies)
Discussion started by: Akshay Hegde
20 Replies

4. Shell Programming and Scripting

Count number of free lines in a text file

Hi Everybody I want to write a script to count the number of lines in a file that don't ahve any thing on it, the free lines, i try to do it with fgrep "" which means to grep on the spaces but it does not work. help me please? (3 Replies)
Discussion started by: hard_revenge
3 Replies

5. Shell Programming and Scripting

Help with script to read lines from file and count values

Hi, I need some help with a script I'm trying to write. I have a log file containing references to a number of different webservices. I wish to write a script that will list the webservices with a count as to how many times they appear in the log. An example of the log file content: ... (2 Replies)
Discussion started by: gman2010
2 Replies

6. Shell Programming and Scripting

append delimeter count for each line in text file

Hi guys, plz tell me how to achieve this how to delete the lines in a file using sed command (6 Replies)
Discussion started by: hari908
6 Replies

7. Shell Programming and Scripting

perl script on how to count the total number of lines of all the files under a directory

how to count the total number of lines of all the files under a directory using perl script.. I mean if I have 10 files under a directory then I want to count the total number of lines of all the 10 files contain. Please help me in writing a perl script on this. (5 Replies)
Discussion started by: adityam
5 Replies

8. UNIX for Dummies Questions & Answers

Comparing two files and count number of lines that match

Hello all, I always found help for my problems using the search option, but this time my request is too specific. I have two files that I want to compare. File1 is the index and File2 contains the data: File1: chr1 protein_coding exon 500 600 . + . gene_id "20532";... (0 Replies)
Discussion started by: DerSeb
0 Replies

9. UNIX for Dummies Questions & Answers

Read directory files and count number of lines

Hello, I'm trying to create a BASH file that can read all the files in my working directory and tell me how many words and lines are in that file. I wrote the following code: FILES="*" for f in "$FILES" do echo -e `wc -l -w $f` done My issue is that my file is outputting in one... (4 Replies)
Discussion started by: jl487
4 Replies

10. UNIX for Dummies Questions & Answers

Count of Number of Lines in a File

Dear Members, I want to count the number of lines in a file; for that i am using the following command : FILE_LINE_COUNT=`wc -l $INT_IN/$RAW_FILE_NAME` if i do an echo on FILE_LINE_COUNT then i get 241 /home/data/testfile.txt I don't want the directory path to be displayed. Variable... (1 Reply)
Discussion started by: sandeep_1105
1 Replies

Featured Tech Videos