Output result with break line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Output result with break line
# 1  
Old 03-30-2016
Output result with break line

Hello,


I am coding a script to check mysql databases using bash script, I would like to check if the status of a table is not 'OK', will return the table name and do some more actions:


check.log


HTML Code:
table1                 OK 
table2                 Some error here 
table3                 OK 
table4                 OK 
table5                 Another error 
table6                 OK 
table7                 Broken 
table8                 A very long error which take a 2 lines of multiple errors
check.sh


Code:
# check and repair tables mysqlcheck -u $hostUser -p$hostPasswd --all-databases --check --auto-repair >> check.log

nCheck=$(awk '$2 != "OK" {print $1}' repairDBsF.log)
echo 'c '$nCheck
// this will return a result in one like:

// table2 table5 table7 table8

Is there anyway to have a result like:


HTML Code:
Number of damaged tables are 4

table2 (Some error here) 
table5 (Another error) 
table7 (Broken) 
table8 (A very long error which take a 2 lines of multiple errors)
The result should be line by line


Thanks in advance
# 2  
Old 03-31-2016
Code:
grep -v "OK"

is another option to exclude lines with string "OK".

In your awk command, try printing entire line instead of just first field using just
Code:
print

or
Code:
print $0

This User Gave Thanks to krishmaths For This Post:
# 3  
Old 03-31-2016
Try:
Code:
awk '$2!="OK"{t++; $2="(" $2; $NF=$NF ")"; s=s $0 "\n" } END{printf "The number of damaged tables is %s\n\n%s",t,s}' file

You can put it in a variable:
Code:
nCheck=$(awk '$2!="OK"{t++; $2="(" $2; $NF=$NF ")"; s=s $0 "\n" } END{printf "The number of damaged tables is %s\n\n%s",t,s}' file)

But be sure to put double quotes around the variable expansion when you print it, otherwise everything ends up in one line...

Code:
echo "$nCheck"

This User Gave Thanks to Scrutinizer For This Post:
# 4  
Old 03-31-2016
My SQL is seriously archaic, but can't you do ALL of your query within SQL? Like
Code:
select ... where status != "OK";

This would give you the desired result incl. the count of defective tables.
# 5  
Old 04-01-2016
Quote:
Originally Posted by krishmaths
Code:
grep -v "OK"

is another option to exclude lines with string "OK".

In your awk command, try printing entire line instead of just first field using just
Code:
print

or
Code:
print $0

Yes, correct, I am only concerned by the page display and the number of errors:

HTML Code:
Number of damaged tables are 4  table2 (Some error here)  table5 (Another error)  table7 (Broken)  table8 (A very long error which take a 2 lines of multiple errors)
---------- Post updated at 01:14 AM ---------- Previous update was at 01:08 AM ----------

@Scrutinizer: could explain the code for me please?

@RudiC: I am looking for a bash code, if you could explain more please
# 6  
Old 04-01-2016
Quote:
Originally Posted by Abu Rayane
[..]
@Scrutinizer: could explain the code for me please?[..]
Sure:
Code:
awk '
  $2!="OK" {             # if the second field is not equal to OK
    t++                  # increase total
    $2="(" $2            # prepend opening parenthesis to the second field
                         # and by assigning a value to one of the fields:
                         # recalculate $0 (which automatically removes excess spacing)
    $NF=$NF ")"          # append closing parenthesis to last field
    s=s $0 "\n"          # create one string "s" that contains all the information separated
                         # by newlines
  } 
  END {                  # After all lines are processes, print the total and the string
    printf "The number of damaged tables is %s\n\n%s",t,s
  }
' file

This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Search a multi-line shell command output and execute logic based on result

The following is a multi-line shell command example: $cargo build Compiling prawn v0.1.0 (/Users/ag/rust/prawn) error: failed to resolve: could not find `setup_panix` in `human_panic` --> src/main.rs:14:22 | 14 | human_panic::setup_panix!(); | ... (2 Replies)
Discussion started by: yogi
2 Replies

2. Shell Programming and Scripting

Line break in sqlplus output through ksh script

Hi, I am new to shell script programming. I have written a ksh script to run the sql File placed in server directory and spool the output in destination directory. Below Command: $ORACLE_HOME/bin/sqlplus -s $ora_uid @$sqlfile_loc$testquery.sql > $opfiledirectory It is generating the output... (6 Replies)
Discussion started by: Sumit Arora
6 Replies

3. Shell Programming and Scripting

Break output file into three files

Help! :) I am getting an output file that looks similar to below. EMAIL_ADDR ----------------------------------------------------------------------------------- user@gmail.com DATABASENAME ----------------------------------------------------------------------------------- db1 db2 db3... (6 Replies)
Discussion started by: cpolikowsky
6 Replies

4. Shell Programming and Scripting

How to compare the current result with previous line result.?

Hi Gurus, I have requirement to compare current result with previous reuslt. The sample case is below. 1 job1 1 1 job2 2 1 job3 3 2 job_a1 1 2 job_a2 2 2 job_a3 3 3 job_b1 1 3 job_b2 2 for above sample file, GID is group ID, for input line, the job run... (1 Reply)
Discussion started by: ken6503
1 Replies

5. Shell Programming and Scripting

How to break the line to the one above?

Hello everyone! I'm trying to make the below file1 look like file2, can anyone help? Basically I just hit backspace on every line that starts with a number. Thanks! file1: THIS#IS-IT1 4 THIS#IS-IT2 3 THIS#IS-IT3 2 THIS#IS-IT4 1 Result > file2: (4 Replies)
Discussion started by: demmel
4 Replies

6. Shell Programming and Scripting

Why result is wrong here ? whether break statement is wrong ?

Hi ! all I am just trying to check range in my datafile pls tell me why its resulting wrong admin@IEEE:~/Desktop$ cat test.txt 0 28.4 5 28.4 10 28.4 15 28.5 20 28.5 25 28.6 30 28.6 35 28.7 40 28.7 45 28.7 50 28.8 55 28.8 60 28.8 65 28.1... (2 Replies)
Discussion started by: Akshay Hegde
2 Replies

7. UNIX for Dummies Questions & Answers

VI Line Break?

So I'm in a Unix class and our assignment was to go into VI and write a script to make this file tree. At the end of it, I'd like it to echo "This is the file tree you've created" then a line break, then . But I'm not sure as to who to do it. Is there a way for when I run it (./filesystem), the... (4 Replies)
Discussion started by: bbowers
4 Replies

8. Shell Programming and Scripting

Add line break for each line in a file

I cannot seem to get this to work.. I have a file which has about 100 lines, and there is no end of line (line break \n) at the end of each line, and this is causing problem when i paste them into an application. the file looks like this this is a test that is a test balblblablblhblbha... (1 Reply)
Discussion started by: fedora
1 Replies

9. Shell Programming and Scripting

BASH: Break line, read, break again, read again...

...when the lines use both a colon and commas to separate the parts you want read as information. The first version of this script used cut and other non-Bash-builtins, frequently, which made it nice and zippy with little more than average processor load in GNOME Terminal but, predictably, slow... (2 Replies)
Discussion started by: SilversleevesX
2 Replies

10. Shell Programming and Scripting

TO break a line

hi All, Have a doubt in ksh..Am not familiar with arrays but i have tried out a script.. plzzzzz correct me with the script My i/p File is: (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (Host = 192.168.2.2) (Port = 1525) ) ) (CONNECT_DATA = (SID = TESTDB1) ) ) ... (7 Replies)
Discussion started by: aajan
7 Replies
Login or Register to Ask a Question