How to remove newline character if it is the only character in the entire file.?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to remove newline character if it is the only character in the entire file.?
# 1  
Old 01-27-2019
How to remove newline character if it is the only character in the entire file.?

I have a file which comes every day and the file data look's as below.


Code:
Vi abc.txt


Code:
a|b|c|d\n
a|g|h|j\n


Some times we receive the file with only a new line character in the file like



Code:
vi abc.txt


Code:
\n



We need to handle the shell script such a way that if the entire file contains only a new line character then remove the new line character else don't touch the file .

Moderator's Comments:
Mod Comment Please select text before pressing the code tags button!

Last edited by Scrutinizer; 01-27-2019 at 03:09 PM..
# 2  
Old 01-27-2019
Do you mean a literal newline character, or the two characters
Code:
\n

?


If the former, try:
Code:
awk NF oldfile > new file

--
How big are the files?
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 01-27-2019
Code:
#!/bin/bash
file="file.log"
if ! grep -q "[[:print:]]" $file; then
        >$file
fi

This User Gave Thanks to nezabudka For This Post:
# 4  
Old 01-27-2019
The fie size is 1byte .
# 5  
Old 01-27-2019
Provided your system (which you fail to mention, btw) has the stat command available, try
Code:
[ $(stat -c%s "$file") = 1 ] && >"$file"

This User Gave Thanks to RudiC For This Post:
# 6  
Old 01-27-2019
Quote:
Originally Posted by nezabudka
Code:
#!/bin/bash
file="file.log"
if ! grep -q "[[:print:]]" $file; then
        >$file
fi


Thanks for the response . This works for me can you explain me how it actually works.
# 7  
Old 01-27-2019
Check if the file contains printable characters
grep -q "[[:print:]]" $file;
if not if ! truncated to zero >$file
I apologize for the not quite detailed answer, I just learn English
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Remove newline character from column spread over multiple lines in a file

Hi, I came across one issue recently where output from one of the columns of the table from where i am creating input file has newline characters hence, record in the file is spread over multiple lines. Fields in the file are separated by pipe (|) delimiter. As header will never have newline... (4 Replies)
Discussion started by: Prathmesh
4 Replies

2. Shell Programming and Scripting

Remove last newline character..

Hi all.. I have a text file which looks like below: abcd efgh ijkl (blank space) I need to remove only the last (blank space) from the file. When I try wc -l the file name,the number of lines coming is 3 only, however blank space is there in the file. I have tried options like... (14 Replies)
Discussion started by: Sathya83aa
14 Replies

3. Shell Programming and Scripting

Remove newline character between two delimiters

hi i am having delimited .dat file having content like below. test.dat(5 line of records) ====== PT2~Stag~Pt2 Stag Test. Updated~PT2 S T~Area~~UNCEF R20~~2012-05-24 ~2014-05-24~~ PT2~Stag y~Pt2 Stag Test. Updated~PT2 S T~Area~METR~~~2012-05-24~2014-05-24~~test PT2~Pt2 Stag Test~~PT2 S... (4 Replies)
Discussion started by: sushine11
4 Replies

4. Shell Programming and Scripting

How to check newline character in file?

Hi All, I have file with only one record,always be only one record. as like below. if that line contains newline end of the line..no need to add, if not just add the new line character. END OF FILE. ROW COUNT: 7 Please help me.. Thanks, (9 Replies)
Discussion started by: bmk
9 Replies

5. Shell Programming and Scripting

Remove newline character or join the broken record

Hi, I have a very huge file, around 1GB of data. I want to remove the newline characters in the file but not preceded by the original end delimiter {} sample data will look like this 1234567 abcd{} 1234sssss as67 abcd{} 12dsad3dad 4sdad567 abcdsadd{} this should look like this... (6 Replies)
Discussion started by: ratheeshjulk
6 Replies

6. Shell Programming and Scripting

Remove \n <newline> character inside the records.

Hi, In my file, I have '\n' characters inside a single record. Because of this, a single records appears in many lines and looks like multiple records. In the below file. File 1 ==== 1,nmae,lctn,da\n t 2,ghjik,o\n ut,de\n fk Expected output after the \n removed File 2 =====... (5 Replies)
Discussion started by: machomaddy
5 Replies

7. Shell Programming and Scripting

any savant ? using AWK/SED to remove newline character between two strings : conditional removal

I'd like to remove (do a pattern or precise replacement - this I can handle in SED using Regex ) ---AFTER THE 1ST Occurrence ( i.e. on the 2nd occurrence - from the 2nd to fourth occurance ) of a specific string : type 1 -- After the 1st occurrence of 1 string1 till the 1st occurrence of... (4 Replies)
Discussion started by: sieger007
4 Replies

8. Shell Programming and Scripting

Remove newline character conditionally

Hi All, I have 5000 records like this Request_id|Type|Status|Priority|Ticket Submitted Date and Time|Actual Resolved Date and Time|Current Ticket Owner Group|Case final Ticket Owner Group|Customer Severity|Reported Symptom/Request|Component|Hot Topic|Reason for Missed SLA|Current Ticket... (2 Replies)
Discussion started by: j_53933
2 Replies

9. Shell Programming and Scripting

To remove the newline character while appending into a file

Hi All, We append the output of a file's size in a file. But a newline character is appended after the variable. Pls help how to clear this. filesize=`ls -l test.txt | awk `{print $5}'` echo File size of test.txt is $filesize bytes >> logfile.txt The output we got is, File size of... (4 Replies)
Discussion started by: amio
4 Replies

10. Shell Programming and Scripting

How to remove a newline character at the end of filename

Hi All, I have named a file with current date,time and year as follows: month=`date | awk '{print $2}'` date=`date | awk '{print $3}'` year=`date | awk '{print $6}'` time=`date +%Hh_%Mm_%Ss'` filename="test_"$month"_"$date"_"$year"_"$time".txt" > $filename The file is created with a... (2 Replies)
Discussion started by: amio
2 Replies
Login or Register to Ask a Question