How do we display specific row of an output from bottom given line number?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How do we display specific row of an output from bottom given line number?
# 1  
Old 02-12-2020
How do we display specific row of an output from bottom given line number?

I pass a number to my script. Passing "1" below.

Code:
./getfile.sh 1
echo "User entered: $1"
 ls -ltr *.conf | sed -n '$p'

I wish to use ls -ltr i.e list files in ascending order of time the latest showing at the bottom of the output.

Number 1 should get me the last row of ls -ltr output i.e the latest file.
Passing Number "2" should get me the second last row of the output.
Number "3 would get me the 3rd last row and so forth.

I wish to use only sed for this purpose as it is works smoothy across different flavors of Operating Systems that I have.

ls -ltr | sed -n '$p' gives me the last row whereas ls -ltr | sed -n 3p gives me the third row from top.

I'm not sure how can I give an equation so that based on user input, I could get my sed to display corresponding row of output.
# 2  
Old 02-12-2020
You want the 3rd (...) newest file? Try NOT reversing the sorting order
Code:
ls -lt *.conf | sed -n "${1}p"

This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-12-2020
If the user passes 1 then i need the newest latest file.

If the user passes 2 then i wish to display only the newest - 1 file i.e second latest file.

if the user passes 3 then the third latest file.

Code:
-bash-4.2$ ls -lt *.conf*
-rwxrwxrwx 1 user1 user 21627 Feb 11 17:17 httpd.conf_1581421731
-rwxrwxrwx 1 user1 user 15445 Feb 11 17:14 httpd-ssl.conf_1581421731
-rwxrwxrwx 1 user1 user 21624 Feb 11 17:13 httpd.conf_1581421456
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421372
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421456
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581408391
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581413246
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581415778
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581421372
-rwxrwxrwx 1 user1 user 21644 Feb 11 13:29 httpd.conf_1581408244
-rwxrwxrwx 1 user1 user 21644 Feb 11 13:29 httpd.conf_1581408293
-rwxrwxrwx 1 user1 user 21627 Feb 11 11:13 httpd.conf_1581399897
-rwxrwxrwx 1 user1 user 21627 Feb 11 11:13 httpd.conf_1581407966
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581399897
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581407966
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408244
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408293
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408391
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581413246
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581415778
-bash-4.2$ ls -lt | sed -n "${1}p"
total 400
-rwxrwxrwx 1 user1 user 21627 Feb 11 17:17 httpd.conf_1581421731
-rwxrwxrwx 1 user1 user 15445 Feb 11 17:14 httpd-ssl.conf_1581421731
-rwxrwxrwx 1 user1 user 21624 Feb 11 17:13 httpd.conf_1581421456
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421372
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421456
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581408391
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581413246
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581415778
-rwxrwxrwx 1 user1 user 21627 Feb 11 13:35 httpd.conf_1581421372
-rwxrwxrwx 1 user1 user 21644 Feb 11 13:29 httpd.conf_1581408244
-rwxrwxrwx 1 user1 user 21644 Feb 11 13:29 httpd.conf_1581408293
-rwxrwxrwx 1 user1 user 21627 Feb 11 11:13 httpd.conf_1581399897
-rwxrwxrwx 1 user1 user 21627 Feb 11 11:13 httpd.conf_1581407966
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581399897
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581407966
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408244
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408293
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408391
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581413246
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581415778


Thus if the user passes 3 then the below file should be be printed
Code:
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408391

if the user passes 4 then the below file should be be printed
Code:
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408293

@Rudic your suggestion does not help get my desired output. Kindly suggest.
# 4  
Old 02-12-2020
How can

Code:
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408293

be the 4th newest file if
Code:
-rwxrwxrwx 1 user1 user 21627 Feb 11 17:17 httpd.conf_1581421731
-rwxrwxrwx 1 user1 user 15445 Feb 11 17:14 httpd-ssl.conf_1581421731
-rwxrwxrwx 1 user1 user 21624 Feb 11 17:13 httpd.conf_1581421456
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421372

exist?
# 5  
Old 02-12-2020
OK what have you done so far?

As we agree the first code you gave in #1 wont take you very far...

Passing numbers, OK but what if its not the case? like char or words, what happens?

Writing a script that accepts arguments is something nice, but unless its for your own usage, it should be fool proof and properly written Like :

No argument -> display usage

Testing the argument values etc...

Last edited by Neo; 02-12-2020 at 11:58 AM..
# 6  
Old 02-12-2020
Quote:
Originally Posted by RudiC
How can

Code:
-rwxrwxrwx 1 user1 user 15445 Feb 11 11:12 httpd-ssl.conf_1581408293

be the 4th newest file if
Code:
-rwxrwxrwx 1 user1 user 21627 Feb 11 17:17 httpd.conf_1581421731
-rwxrwxrwx 1 user1 user 15445 Feb 11 17:14 httpd-ssl.conf_1581421731
-rwxrwxrwx 1 user1 user 21624 Feb 11 17:13 httpd.conf_1581421456
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421372

exist?
@Rudic sorry that was by overlook. With parameter 3 the row returned should be the third row ie.
Code:
-rwxrwxrwx 1 user1 user 21624 Feb 11 17:13 httpd.conf_1581421456

Likewise when the user passes 4 the 4th latest row should be returned i.e
Code:
-rwxrwxrwx 1 user1 user 15445 Feb 11 15:39 httpd-ssl.conf_1581421372

But, as I shared the output of your suggestion i get a list of rows and not that single particular row corresponding to the argument passed to the script.

@vbe thank you for the points you highlighted however, the parameter is checked by a Jenkins UI tool and my script will only be executed once a number is passed to that script by the user. Thus the argument to my script is certainly an integer.

Kindly suggest
# 7  
Old 02-12-2020
We have not seen any code so far and waiting to see this famous script...
Quote:
the parameter is checked by a Jenkins UI tool and my script will only be executed once a number is passed to that script by the user.
Oh thats interesting, where is the code?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed command to replace a line at a specific line number with some other line

my requirement is, consider a file output cat output blah sdjfhjkd jsdfhjksdh sdfs 23423 sdfsdf sdf"sdfsdf"sdfsdf"""""dsf hellow there this doesnt look good et cetc etc etcetera i want to replace a line of line number 4 ("this doesnt look good") with some other line ... (3 Replies)
Discussion started by: vivek d r
3 Replies

2. Shell Programming and Scripting

Cut from specific line number to a line number

Hi All, I've a file like this.. Sheet1 a,1 a,2 a,3 a,4 a,5 Sheet2 a,6 a,7 a,8 a,9 a,10 Sheet3 a,11 a,12 a,13 (7 Replies)
Discussion started by: manab86
7 Replies

3. Homework & Coursework Questions

Using ls or echo to display a specific output

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: What single command line would you enter to get the following output? 8140 drwxr-xr-x 9 root bin 18 Jan 20... (6 Replies)
Discussion started by: dasboot
6 Replies

4. UNIX and Linux Applications

display which line returns specific output

Hi, I'm trying to figure out a way to find which line in my file.txt with IP addresses: 192.168.0.1 192.178.0.2 etc... returns specific result when I execute command affecting all lines. For example when I run: for line in `cat file.txt`; do snmpget $line done it displays the... (5 Replies)
Discussion started by: svetoslav_sj
5 Replies

5. Shell Programming and Scripting

Help with ksh script to display output with specific contents

This is Input - starts with Storage Group Name and ends with Shareable and the loop continues all I need is Storage group name and Alu numbers in the below output format requested. Storage Group Name: abcd Storage Group UID: 00:00:000:00:0:0:0 HBA/SP Pairs: HBA UID ... (6 Replies)
Discussion started by: maddysa
6 Replies

6. Shell Programming and Scripting

Display Specific line number using tail command

Hi , 1)i want to display specific line number using tail command. e.g. display 10 line from end. Please help... 2)Want to display line 10 to 15 (from end)using tail command) (2 Replies)
Discussion started by: vivek1489
2 Replies

7. Shell Programming and Scripting

Display a menu on bottom right of screen

Hi, I have a menu of around 10 lines with options. I want to display it in bottom right corner of screen for better display. I can do it with clear screen. But I don't want to use it, because it will clear the existing text. After one choice from menu is executed, the menu should just place... (3 Replies)
Discussion started by: som.nitk
3 Replies

8. Shell Programming and Scripting

Take each number in table row and find the difference from the corresponding line

I have a two files containing numbers like below. First one contains one number on each line, the other is a table of numbers, each separated by a space. There are the same number of lines in each file. I want to take each number in the row of the table and find the difference from the... (12 Replies)
Discussion started by: kristinu
12 Replies

9. Shell Programming and Scripting

using sed to replace a specific string on a specific line number using variables

using sed to replace a specific string on a specific line number using variables this is where i am at grep -v WARNING output | grep -v spawn | grep -v Passphrase | grep -v Authentication | grep -v '/sbin/tfadmin netguard -C'| grep -v 'NETWORK>' >> output.clean grep -n Destination... (2 Replies)
Discussion started by: todd.cutting
2 Replies

10. Shell Programming and Scripting

Adding a columnfrom a specifit line number to a specific line number

Hi, I have a huge file & I want to add a specific text in column. But I want to add this text from a specific line number to a specific line number & another text in to another range of line numbers. To be more specific: lets say my file has 1000 lines & 4 Columns. I want to add text "Hello"... (2 Replies)
Discussion started by: Ezy
2 Replies
Login or Register to Ask a Question