print first and last row


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers print first and last row
# 1  
Old 09-26-2012
print first and last row

Hello everybody,

I would like to ask you, how to print first and last row from input (not file).
I want to get first and last name of file from directory sorted by name, which contains files e.g:
ab.txt
fg.txt
bc.txt

and the output should be ab.txt and fg.txt.

I used something like this

Code:
find ./ -maxdepth 2 -mindepth 2 print | awk -F"/" '{ print $NF }' | sort -n



and I try to get output like to print first and last line from file, but it gave me only one value instead of two values. Thank you for your help.


s.


# 2  
Old 09-26-2012
try this..
Code:
 find ./ -maxdepth 2 -mindepth 2 print | sort | awk -F"/" '{ if(NR ==1){print $NF }}END {print $NF}'


Last edited by pamu; 09-27-2012 at 02:56 AM..
# 3  
Old 09-26-2012
try this ; sort on the filename(here 9 is the column of the filename). It first sorts on the filename and prints the first and last lines.

Code:
 
ls -ltr | sort -nk9 | sed -n '1p;$p'

# 4  
Old 09-26-2012
sparks partly got it right:

Code:
sed -n '1p;$p'

will print the first and last line of whatever comes its way: in a pipeline it prints the first and the last line of the input, given a filename it prints the first and last line of the file.

However: "sort -n" sorts numerically and with the filenames this does simply nothing because the aren't numerical values. The same goes for "sort -nk9", which sorts numerically on non-numerical input.

"ls" built-in default sorts ascending alphabetically, unless it is told other to do otherwise, like with "-r" (reverse the sorting order) and/or the "-t" (sort on timestamp). To switch off alphabetacal sorting to sort on timestamp descending ("-tr") first only to re-sort alphabetically later is somewhat futile, isn't it?

Code:
ls | sed -n '1p;$p'

will do what you want. You might ask why the output is in one column where the output of "ls" is in several columns. "ls" formats the output only in several columns if its output is going to a terminal. Still, you can force one-column-output with the "-1" switch and if you prefer long output use the "-l" switch. Write

Code:
ls -1 | sed -n '1p;$p'
ls -l | sed -n '1p;$p'

If you want to make sure to have only files (not directories, block devices, links, etc.) in your output you can filter them out in the long output easily:

Code:
ls -l | sed -n '/^-/p' | sed -n '1p;$p'

I hope this helps.

bakunin
These 2 Users Gave Thanks to bakunin For This Post:
# 5  
Old 09-27-2012
wow, thank you all for your explanation.

Last edited by satin1321; 09-27-2012 at 05:56 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Print row on 4th column to all row

Dear All, I have input : SEG901 5173 9005 5740 SEG902 5227 5284 SEG903 5284 5346 SEG904 5346 9010 SEG905 5400 5456 SEG906 5456 5511 SEG907 5511 9011 SEG908 5572 9015 SEG909 5622 9020 SEG910 5678 5739 SEG911 5739 5796 SEG912 5796 9025 ... (3 Replies)
Discussion started by: attila
3 Replies

2. Shell Programming and Scripting

Search row by row from one file to another file if match is found print few colums of file 2

this is the requirement list.txt table1 table2 table3 testfile.txt name#place#data#select * from table1 name2#place2#data2#select * from table 10 innerjoin table3 name2#place2#data2#select * from table 10 output name place table1 name2 place table3 i tried using awk (7 Replies)
Discussion started by: vamsekumar
7 Replies

3. Shell Programming and Scripting

Read row number from 1 file and print that row of second file

Hi. How can I read row number from one file and print that corresponding record present at that row in another file. eg file1 1 3 5 7 9 file2 11111 22222 33333 44444 55555 66666 77777 88888 99999 (3 Replies)
Discussion started by: Abhiraj Singh
3 Replies

4. Shell Programming and Scripting

Get row number from file1 and print that row of file2

Hi. How can we print those rows of file2 which are mentioned in file1. first character of file1 is a row number.. for eg file1 1:abc 3:ghi 6:pqr file2 a abc b def c ghi d jkl e mno f pqr ... (6 Replies)
Discussion started by: Abhiraj Singh
6 Replies

5. Shell Programming and Scripting

Print various rows in one row

I have this in a file 11.22.33.44 yyyyyyuser With awk/sed, I need this to be output as follows alias server.domain.com='ssh yyyyyyuser@11.22.33.44' (4 Replies)
Discussion started by: anil510
4 Replies

6. UNIX for Dummies Questions & Answers

awk to print first row with forth column and last row with fifth column in each file

file with this content awk 'NR==1 {print $4} && NR==2 {print $5}' file The error is shown with syntax error; what can be done (4 Replies)
Discussion started by: cdfd123
4 Replies

7. UNIX for Dummies Questions & Answers

Print last row of numbers

I have a spreadsheet of extremely long rows of numbers. I want to print only the last column. Tried using printf but there seems to be too many rows. example: 3 100 34 7 23 0 8 ..... X 400 203 778 1 ..........Y 58 3 9 0 100 ..........Z I only want to print X, Y and... (1 Reply)
Discussion started by: jimmyf
1 Replies

8. Shell Programming and Scripting

Print the row element till the next row element appear in a column

Hi all I have file with columns F3 pathway CPS F2 H2 H4 H5 H6 no pathway CMP H7 H8 H9 H10 My expected output is F3 pathway CPS F2 pathway CPS (10 Replies)
Discussion started by: Priyanka Chopra
10 Replies

9. Shell Programming and Scripting

only print a selected row

this works: cat file.txt| awk 'NR==45,NR==55' but how do I assign variables instead of numbers: this does not work: cat file.txt | awk 'NR==$start,NR==$end' there need variables instead of numbers Sorry for my English Thank you for answer (3 Replies)
Discussion started by: gizmo16
3 Replies

10. UNIX for Dummies Questions & Answers

Print out a row of data

hi im completely new at unix so dont hate me for asking what is probably the easiest question ever. below is an extract of some data im processing. the first column is like a counter while the second is an ip address. i need to be able to output the ip address based on which has the largest... (4 Replies)
Discussion started by: Streetrcr
4 Replies
Login or Register to Ask a Question