LinuxQuestions.org
Download your favorite Linux distribution at LQ ISO.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 03-09-2015, 12:27 PM   #1
Regnets1
LQ Newbie
 
Registered: Feb 2012
Posts: 24

Rep: Reputation: Disabled
bash script to output certain lines from a file


I am trying to write a script to create a variable (string) out of specific lines from another file. The string will be used as headings for lists in another script. My plan is to create a variable "myvar" with the output from an awk command run against a file called banners.txt then I can call $myvar whenever it is appropriate in the larger script. additionally I can add/modify the banner file instead of having to comb through a large script to add or change echo commands.
So, here is my proof of concept script:
Code:
#!/bin/bash

path=/home/rstenger/

TESTFILE=$(<banners.txt)
MYVAR=$( awk 'NR > 6 && NR < 10' "$TESTFILE" )
#
echo ""
echo ""
echo $MYVAR
#
for i in {1..5}; do echo ""; done
echo $TESTFILE

exit
which produces this output:
Code:
sl7jump1~#->./test1.sh 
awk: cmd. line:2: fatal: cannot open file `******************************************************
*                1st banner has 3 line               *
******************************************************
******************************************************
*                2nd banner has 3 line               *
****************************************************** 
******************************************************
*                3rd banner has 3 line               *
******************************************************' for reading (File name too long)








3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 1st banner has 3 line 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 2nd banner has 3 line 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd banner has 3 line 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names
What I was looking for is:
Code:
******************************************************
*                3rd banner has 3 line               *
******************************************************
I am very puzzled as to why I get the contents of the file in the awk error message, and the contents of my home directory as the variable.

Thanks,
Robert
 
Old 03-09-2015, 12:29 PM   #2
pan64
LQ Guru
 
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 9,905

Rep: Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921Reputation: 2921
it would be probably better:
TESTFILE=banners.txt
 
Old 03-09-2015, 12:41 PM   #3
Regnets1
LQ Newbie
 
Registered: Feb 2012
Posts: 24

Original Poster
Rep: Reputation: Disabled
pan64, thanks for the quick response. I tried your suggestion

Code:
#!/bin/bash

path=/home/rstenger/

TESTFILE=banners.txt
MYVAR=$( awk 'NR > 6 && NR < 10' "$TESTFILE" )
#
echo ""
echo ""
echo $MYVAR
#
for i in {1..5}; do echo ""; done
echo $TESTFILE

exit
Here is the output.
Code:
sl7jump1~#->./test1.sh 


3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd banner has 3 line 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names 3rd_floor_lab_ex3200s.txt banner banners.txt ban_test.sh base_configs Images lab_cyclades.sh lab_devices.v3.sh Projects savvis.lab_device_list Savvis_Lab-Domain-DNS.txt test1.sh vrf_names





banners.txt
Thanks again for the help it is greatly appreciated.
 
Old 03-13-2015, 10:11 AM   #4
Regnets1
LQ Newbie
 
Registered: Feb 2012
Posts: 24

Original Poster
Rep: Reputation: Disabled
I worked around the issue I was seeing above. Instead of trying to read the entire file into a variable, I created my individual banners directly from the file like this

Code:
BANNER1=$( awk 'NR < 4 ' banners.txt)
This works fine for my purposes.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
[SOLVED] Deleting lines from a file in a bash script MrTwister Linux - General 3 01-27-2014 08:30 AM
Basic bash script question re: file size or # of lines in a file the_fornicator Programming 6 09-03-2009 10:41 AM
bash script to remove the blank lines in the file naveensankineni Programming 7 03-25-2008 09:34 PM
Bash script question (sending output to specific lines) ptcl Linux - Software 9 11-21-2006 04:53 AM
Can't get lines of a file with a Bash script.. barisdemiray Programming 2 08-11-2004 01:42 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie

All times are GMT -5. The time now is 06:18 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration