Visit Our UNIX and Linux User Community


File with data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File with data
# 1  
Old 01-13-2017
File with data

My requirement is to find out data in any of the file in particular path.

I am using UNIX OS.

For example I have two files. A123.rej & A345.rej

A123.rej contain data

Code:
123,456

A345.rej is a empty file.

I tried a code to find , if any of this file contains data, I need to echo as data found, if both the files are empty, then I will echo as No data. Currently I am using the below code.But its not working.Kindly help on this

Code:
if [ -s A*.rej ]
then echo "Data"
else
echo "No data"
fi

# 2  
Old 01-13-2017
Quote:
Originally Posted by ginrkf
My requirement is to find out data in any of the file in particular path.

I am using UNIX OS.

For example I have two files. A123.rej & A345.rej

A123.rej contain data

Code:
123,456

A345.rej is a empty file.

I tried a code to find , if any of this file contains data, I need to echo as data found, if both the files are empty, then I will echo as No data. Currently I am using the below code.But its not working.Kindly help on this

Code:
if [ -s A*.rej ]
then echo "Data"
else
echo "No data"
fi

Is this a homework assignment? If not, how will this information be used?

Which UNIX OS are you using?

What shell are you using?

Are there always exactly two files? Are they always named A123.rej & A345.rej?

In what way does your code "not work"? What diagnostics does it produce? When all of your files are empty, what output does it produce? When one or more of your files contain data, what output does it produce? Does it behave differently if there is only one file with a name ending in .rej?
# 3  
Old 01-13-2017
hi

Please find my answers below inline

Is this a homework assignment? If not, how will this information be used?

--> This is part of my project work.Actually I am writing a job , where we can call unix commands also.So my requirement is if I get some n number of input files, I will create same number of reject files with the format sourcefilename.rej. Source file name is in the below format

Code:
Party_YYYYMMDD_HHMISSS.txt

so if I have two source files I will have two reject files.

Which UNIX OS are you using?-->
What shell are you using?--> Regarding this I am not sure, as this is not my main tool.Very rarely I use UNIX.

Are there always exactly two files? Are they always named A123.rej & A345.rej? --> Hope the above explanation will answer this question

In what way does your code "not work"? What diagnostics does it produce? When all of your files are empty, what output does it produce? When one or more of your files contain data, what output does it produce? Does it behave differently if there is only one file with a name ending in .rej? --->

I have two rej files like this
Code:
Party_20120101_121212.rej
Party_20120101_121214.rej

When I tries to execute the below code I am getting some error.

Code:
if [ -s Party*.rej ]
> then
> echo "Data"
> else
> echo "No DATA"
> fi
-bash: [: Party_20120101_121212.rej: binary operator expected
No DATA

My expectation is that, if we have n number of Party*.rej files and if any of the file contains data in it(Data means there should be more than two records in the file, as the row is the header), I need to get echo as "Data"

I am not sure whether this convey my requirement or not. To be frank, I am not very good in UNIX :-)
# 4  
Old 01-13-2017
That specification still is not that easy to understand. "No Data" seems not to be equivalent to "empty file", so the -s primary in the conditional expression can't be used. Aside: -s requires one single argument, not a list of files as probably produced with the wild cards patterns if several matches exist.

Based on your before last paragraph, would this come close to what you need:
Code:
[ $(cat *.rej | wc -l) -gt $(ls -1 *.rej | wc -l) ] && echo "Data" || echo "No data"

This User Gave Thanks to RudiC For This Post:
# 5  
Old 01-13-2017
You could also try the following:-
Code:
[ $(wc -l A*.rej | tail -1) = "0 total" ] && echo "No data" || echo "Data"

...... or for each individual file:-
Code:
for file in A*.rej
do
   [ -s "$file" ] && state="no data" || state="data"
   printf "The file %s has %s.\n" "$file" "$state"
done

Both of these will fail, however, if the number of matched files is large and causes the executed command to be too big. if this is likely, then you may need to go with a find command something like this:-
Code:
[ $(find . -type f | xargs cat | wc -l) -eq 0 ] && echo "No data" || echo "Data"


Would any of these help?

Robin
This User Gave Thanks to rbatte1 For This Post:
# 6  
Old 01-13-2017
This will work :-

Code:
found=0
if [ -s A123.rej ]
then
  found=1
fi

if [ -s A345.rej ]
then
  found=1
fi

if [ $found = 0 ]
then
  echo "No Data"
else
  echo "Data found"
fi


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 01-13-2017 at 01:01 PM.. Reason: Added CODE tags.
This User Gave Thanks to Chrismcq For This Post:
# 7  
Old 01-14-2017
Multiple file testing like rbatte1 tried to tell, if you need only know if some while include something.
Code:
found=0
for f in A*.rej
do
    [ ! -s "$f" ] && continue
   found=1
   break
done
[ "$found" = 1 ] && echo "we have data in file $f"

This User Gave Thanks to kshji For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #465
Difficulty: Medium
A 2017 security audit of three NTP implementations, conducted on behalf of the Linux Foundation's Core Infrastructure Initiative, suggested that both NTP was less secure than Chrony.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

In PErl script: need to read the data one file and generate multiple files based on the data

We have the data looks like below in a log file. I want to generat files based on the string between two hash(#) symbol like below Source: #ext1#test1.tale2 drop #ext1#test11.tale21 drop #ext1#test123.tale21 drop #ext2#test1.tale21 drop #ext2#test12.tale21 drop #ext3#test11.tale21 drop... (5 Replies)
Discussion started by: Sanjeev G
5 Replies

2. Shell Programming and Scripting

awk --> math-operation in data-record and joining with second file data

Hi! I have a pretty complex job - at least for me! i have two csv-files with meassurement-data: fileA ...... (2 Replies)
Discussion started by: IMPe
2 Replies

3. Shell Programming and Scripting

Replace data of a file with data from another file using shell scripting.

Dears, I'm new to shell scripting and i was wondering if you can help me with following matter. I have a file containing 400,000 records. The file contains two columns like: 00611291,0270404000005453 25262597,1580401000016155 25779812,1700403000001786 00388934,1200408000000880... (1 Reply)
Discussion started by: paniklas
1 Replies

4. Shell Programming and Scripting

Extract header data from one file and combine it with data from another file

Hi, Great minds, I have some files, in fact header files, of CTD profiler, I tried a lot C programming, could not get output as I was expected, because my programming skills are very poor, finally, joined unix forum with the hope that, I may get what I want, from you people, Here I have attached... (17 Replies)
Discussion started by: nex_asp
17 Replies

5. Shell Programming and Scripting

Generate tabular data based on a column value from an existing data file

Hi, I have a data file with : 01/28/2012,1,1,98995 01/28/2012,1,2,7195 01/29/2012,1,1,98995 01/29/2012,1,2,7195 01/30/2012,1,1,98896 01/30/2012,1,2,7083 01/31/2012,1,1,98896 01/31/2012,1,2,7083 02/01/2012,1,1,98896 02/01/2012,1,2,7083 02/02/2012,1,1,98899 02/02/2012,1,2,7083 I... (1 Reply)
Discussion started by: himanish
1 Replies

6. UNIX for Dummies Questions & Answers

Mapping a data in a file and delete line in source file if data does not exist.

Hi Guys, Please help me with my problem here: I have a source file: 1212 23232 343434 ASAS1 4 3212 23232 343434 ASAS2 4 3234 23232 343434 QWQW1 4 1134 23232 343434 QWQW2 4 3212 23232 343434 QWQW3 4 and a mapping... (4 Replies)
Discussion started by: kokoro
4 Replies

7. UNIX for Dummies Questions & Answers

How to get data only inside polygon created by points which is part of whole data from file?

hiii, Help me out..i have a huge set of data stored in a file.This file has has 2 columns which is latitude & longitude of a region. Now i have a program which asks for the number of points & based on this number it asks the user to enter that latitude & longitude values which are in the same... (7 Replies)
Discussion started by: reva
7 Replies

8. Shell Programming and Scripting

Find and replace data in text file with data in same file

OK I will do my best to explain what I need help with. I am trying to format an ldif file so I can import it into Oracle oid. I need the file to look like this example. Keep in mind there are 3000 of these in the file. changetype: modify replace: userpassword dn:... (0 Replies)
Discussion started by: timothyha22
0 Replies

9. Shell Programming and Scripting

Using loop reading a file,retrieving data from data base.

Hi All, I am having trouble through, I am reading the input from tab delimited file containing several records, e.g. line1 field1 field2 field3 so on.. line2 field1 field2 field3 so on.. .. .. on the basis of certain fields for each record in input file, I have to retrieve... (1 Reply)
Discussion started by: Sonu4lov
1 Replies

Featured Tech Videos