Sponsored Content
Top Forums Shell Programming and Scripting Very big text file - Too slow! Post 302515266 by fedonMan on Tuesday 19th of April 2011 04:20:15 PM
Old 04-19-2011
Very big text file - Too slow!

Hello everyone,
suppose there is a very big text file (>800 mb) that each line contains an article from wikipedia. Each article begins with a tag (<..>) containing its url. Currently there are 10^6 articles in the file.

I want to take random N articles, eliminate all non-alpharithmetic characters and count the total number of words, and total number of unique words for further processing.

I have written the following script that works fine, except taking forever....
Code:
#!/bin/bash
FILENAME=$1
COUNT=0
DOCS=$(wc -l < $FILENAME)

if [ -f words.txt ] 
    then rm words.txt
fi
if [ -f words_uniq.txt ]
    then rm words_uniq.txt
fi

while [ $COUNT -le 1000 ] 
do
      let COUNT++
      if [ $(($COUNT % 100)) -eq 0 ]
            then echo "$COUNT texts processed"
      fi
      RAND=$((RANDOM % DOCS + 1))
      sed -n "$RAND{p;q;}" "$FILENAME" | sed "s/<.*>//g" | tr -cs "[:alpha:]" "[\n*]" | tr "[:upper:]" "[:lower:]" >> words.txt
done

n=$(wc -w < words.txt)
cat words.txt | sort | uniq > words_uniq.txt
V=$(wc -w < words_uniq.txt)
echo "V = $V, n = $n"

The above code (for 1000 random articles) takes around 2 minutes to run in my env. Suppose the time need for 10.000+ articles or more.

Is there a way to make this run faster? I am completely new to shell scripting and don't have much experience about how sed,tr,awk and other similar commands are supposed to be used efficiently.

Thank you
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to view a big file(143M big)

1 . Thanks everyone who read the post first. 2 . I have a log file which size is 143M , I can not use vi open it .I can not use xedit open it too. How to view it ? If I want to view 200-300 ,how can I implement it 3 . Thanks (3 Replies)
Discussion started by: chenhao_no1
3 Replies

2. AIX

How to send big files over slow network?

Hi, I am trying to send oracle archives over WAN and it is taking hell a lot of time. To reduce the time, I tried to gzip the files and send over to the other side. That seems to reduce the time. Does anybody have experienced this kind of problem and any possible ways to reduce the time. ... (1 Reply)
Discussion started by: giribt
1 Replies

3. Shell Programming and Scripting

Cut big text file into 2

I have a big text file. I want to cut it into 2 pieces at known point or I know the pattern of the contents from where it can separate the files. Is there any quick command/solution? (4 Replies)
Discussion started by: sandy221
4 Replies

4. UNIX for Dummies Questions & Answers

How to slow down text output?

I found some ascii art that is animated (vt100) and would like to view it properly. However, when I try using 'cat', the file is done almost the instant I press enter. How can I view the file in a slower fashion (similar to the days of 2400baud, for example)? (2 Replies)
Discussion started by: Fangs McWolf
2 Replies

5. UNIX for Dummies Questions & Answers

How big is too big a config.log file?

I have a 5000 line config.log file with several "maybe" errors. Any reccomendations on finding solvable problems? (2 Replies)
Discussion started by: NeedLotsofHelp
2 Replies

6. Shell Programming and Scripting

Helping in parsing subset of text from a big results file

Hi All, I need some help to effectively parse out a subset of results from a big results file. Below is an example of the text file. Each block that I need to parse starts with "reading sequence file 10.codon" (next block starts with another number) and ends with **p-Value(s)**. I have given... (1 Reply)
Discussion started by: Lucky Ali
1 Replies

7. UNIX for Advanced & Expert Users

sed working slow on big files

HI Experts , I'm using the following code to remove spaces appearing at the end of the file. sed "s/*$//g" <filename> > <new_filename> mv <new_filename> <filename> this is working fine for volumes upto 20-25 GB. for the bigger files it is taking more time that it is required... (5 Replies)
Discussion started by: sumoka
5 Replies

8. UNIX and Linux Applications

tabbed text editor without big libraries

I am looking for a tabbed text editor without a big library like gnome, kde, and gtk, I know about gedit, kate with extensions, geany, and bluefish. I would prefer it to be like gedit and be really light weight. So if anyone knows of a text editor that doesn't require those big libraries please let... (3 Replies)
Discussion started by: cokedude
3 Replies

9. Shell Programming and Scripting

Improve script - slow process with big files

Gents, Please can u help me to improve this script to be more faster, it works perfectly but for big files take a lot time to end the job.. I see the problem is in the step (while) and in this part the script takes a lot time.. Please if you can find a best way to do will be great. ... (13 Replies)
Discussion started by: jiam912
13 Replies
MESG(1)                                                            User Commands                                                           MESG(1)

NAME
mesg - display (or do not display) messages from other users SYNOPSIS
mesg [option] [n|y] DESCRIPTION
The mesg utility is invoked by a user to control write access others have to the terminal device associated with standard error output. If write access is allowed, then programs such as talk(1) and write(1) may display messages on the terminal. Traditionally, write access is allowed by default. However, as users become more conscious of various security risks, there is a trend to remove write access by default, at least for the primary login shell. To make sure your ttys are set the way you want them to be set, mesg should be executed in your login scripts. ARGUMENTS
n Disallow messages. y Allow messages to be displayed. If no arguments are given, mesg shows the current message status on standard error output. OPTIONS
-v, --verbose Explain what is being done. -V, --version Display version information and exit. -h, --help Display help text and exit. EXIT STATUS
The mesg utility exits with one of the following values: 0 Messages are allowed. 1 Messages are not allowed. >1 An error has occurred. FILES
/dev/[pt]ty[pq]? SEE ALSO
login(1), talk(1), write(1), wall(1), xterm(1) HISTORY
A mesg command appeared in Version 6 AT&T UNIX. AVAILABILITY
The mesg command is part of the util-linux package and is available from https://www.kernel.org/pub/linux/utils/util-linux/. util-linux July 2014 MESG(1)
All times are GMT -4. The time now is 07:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy