How to delete all lines with less then 32 characters from a textfile?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to delete all lines with less then 32 characters from a textfile?
# 1  
Old 02-25-2010
How to delete all lines with less then 32 characters from a textfile?

I need to delete all lines with less then 32 characters from a textfile. Smilie
# 2  
Old 02-25-2010
Code:
perl -nl -i.bak -e 'print if length > 32' yourfile

It will save the original file as a copy with the extension .bak
# 3  
Old 02-25-2010
What if Clint Eastwood was a UNIX sysadmin?

Quote:
Originally Posted by Harry Callahan
I know what you're thinking. "Does the unlink(2) syscall reclaim all resources associated with a file even if a process has the file open?" Well, to tell you the truth, in all this excitement I kind of lost track myself. But being as this is a .44 rm, the most powerful unix userland executable in the world, and would blow your file clean off, you've got to ask yourself one question: Do I feel lucky? Well, do ya, punk?
Code:
(rm data; sed '/.\{32\}/!d' > data) < data

To be clear, even if this works fine for you, it is a dangerous way of doing business. A power failure at just the right moment could leave you with no directory link to your data.

A safe, non-Dirty Harry approved version:
Code:
mv data data.bak; sed '/.\{32\}/!d' < data.bak > data


Last edited by alister; 02-25-2010 at 12:15 PM..
# 4  
Old 02-25-2010
Awk and shell version.
Code:
awk 'length($0) >=32 { print } '  infile > outfile

Code:
#!/someposixshell
while read line 
do
      [ ${#line} -lt 32 ] && continue
      echo $line
done < infile > outfile

# 5  
Old 02-25-2010
Hi, kshji

At the cost of readability for AWK newbies, you can minimized that to:
Code:
awk 'length()>31' infile > outfile

And the shell version to:
Code:
#!/someposixshell
while IFS="" read -r line 
do
      [ ${#line} -gt 31 ] && echo "$line"
done < infile > outfile

It is necessary to disable IFS field splitting to prevent losing leading/trailing whitespace. The -r raw option is required to prevent joining lines that end in backslash with the line that follows. And the $line argument to echo needs to be quoted to prevent the replacing of runs of IFS whitespace with a single space.

Cheers,
Alister

Last edited by alister; 02-25-2010 at 12:40 PM..
# 6  
Old 02-25-2010
Quote:
Originally Posted by alister
Hi, kshji

At the cost of readability for AWK newbies, you can minimized that to:
Code:
awk 'length()>31' infile > outfile

And the shell version to:
Code:
#!/someposixshell
while IFS="" read -r line 
do
      [ ${#line} -gt 31 ] && echo "$line"
done < infile > outfile

It is necessary to disable IFS field splitting to prevent losing leading/trailing whitespace. The -r raw option is required to prevent joining lines that end in backslash with the line that follows. And the $line argument to echo needs to be quoted to prevent the replacing of runs of IFS whitespace with a single space.

Cheers,
Alister
Code:
awk 'length>31' infile > outfile

Smilie
# 7  
Old 02-25-2010
My AWK version

Code:
'/.{32,}/'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replicating certain lines in a textfile

I am very new to to shell scripting and facing a problem that I can't seem to solve. I want to write a bash script that edits file1.txt and saves it as file2.txt. This is what the files should look like: file1: textline1 textline2 startCopy copyThis endCopy textline3 textline4 file2: ... (6 Replies)
Discussion started by: sandy90
6 Replies

2. Shell Programming and Scripting

How to separate sorte different characters from one textfile and copy them in a new textfile?

My first post, so don't kill me :) Say i open some textfile with some example like this. on the table are handy, bread and wine Now i know exactly what is in and i want to separate and sorted it in terminal to an existing file with another 2 existing lines in like this: table plane ... (3 Replies)
Discussion started by: schwatter
3 Replies

3. Shell Programming and Scripting

Cut lines from and to in a textfile

i am having a text file like below rama surya pandu latha singh raja i want to get the new file from 3 to 5 i.e pandu latha singh please help (1 Reply)
Discussion started by: suryanarayana
1 Replies

4. Shell Programming and Scripting

Sed/awk to delete single lines that aren't touching other lines

Hello, I'm trying to figure out how to use sed or awk to delete single lines in a file. By single, I mean lines that are not touching any other lines (just one line with white space above and below). Example: one two three four five six seven eight I want it to look like: (6 Replies)
Discussion started by: slimjbe
6 Replies

5. Shell Programming and Scripting

search and replace, when found, delete multiple lines, add new set of lines?

hey guys, I tried searching but most 'search and replace' questions are related to one liners. Say I have a file to be replaced that has the following: $ cat testing.txt TESTING AAA BBB CCC DDD EEE FFF GGG HHH ENDTESTING This is the input file: (3 Replies)
Discussion started by: DeuceLee
3 Replies

6. UNIX for Advanced & Expert Users

In a huge file, Delete duplicate lines leaving unique lines

Hi All, I have a very huge file (4GB) which has duplicate lines. I want to delete duplicate lines leaving unique lines. Sort, uniq, awk '!x++' are not working as its running out of buffer space. I dont know if this works : I want to read each line of the File in a For Loop, and want to... (16 Replies)
Discussion started by: krishnix
16 Replies

7. Shell Programming and Scripting

Find a string in textfile, erase $num lines after that string

I have a textfile containing text similar to the following pattern: STRING1 UNIQUE_STRING1 STRING2 STRING3 STRING4 STRING5 STRING1 UNIQUE_STRING2 STRING2 STRING3 STRING4 STRING5 STRING1 UNIQUE_STRING3 STRING2 STRING3 (6 Replies)
Discussion started by: ilcsfe
6 Replies

8. UNIX for Dummies Questions & Answers

How get only required lines & delete the rest of the lines in file

Hiiii I have a file which contains huge data as a.dat: PDE 1990 1 9 18 51 28.90 24.7500 95.2800 118.0 6.1 0.0 BURMA event name: 010990D time shift: 7.3000 half duration: 5.0000 latitude: 24.4200 longitude: 94.9500 depth: 129.6000 Mrr: ... (7 Replies)
Discussion started by: reva
7 Replies

9. Shell Programming and Scripting

Detect lines beginning with double-byte characters (Japanese) and delete

Greetings, I want to use a script (preferably awk) which determines if the first character in a line is double-byte (as in Japanese or Chinese) and deletes it. For example: (in the above quote, I see Japanese on my screen for two lines - with 2 characters in the first and 3 characters in the... (8 Replies)
Discussion started by: ubbeauty
8 Replies

10. Shell Programming and Scripting

How to delete lines in a file that have duplicates or derive the lines that aper once

Input: a b b c d d I need: a c I know how to get this (the lines that have duplicates) : b d sort file | uniq -d But i need opossite of this. I have searched the forum and other places as well, but have found solution for everything except this variant of the problem. (3 Replies)
Discussion started by: necroman08
3 Replies
Login or Register to Ask a Question