print first and last row

Thread Tools Search this Thread
# 1  
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:

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

I used something like this

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.


# 2  
try this..
 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 03:56 AM..
# 3  
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.

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

# 4  
sparks partly got it right:

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?

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

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:

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

I hope this helps.

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

Last edited by satin1321; 09-27-2012 at 06:56 PM..

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #942
Difficulty: Medium
The underlying Data Link Layer never poses limits to the maximum frame size.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Print row wise

Hi Help, I have an I/p, which looks like --- FF GG HH I want the o/p to be like --- FF GG HH. How we can do that? Thanks (7 Replies)
Discussion started by: Indra2011
7 Replies

2. 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

3. 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

4. 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

5. 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

6. Shell Programming and Scripting

Print various rows in one row

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

7. 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

8. 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

9. 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

10. Shell Programming and Scripting

Print columns from each row

I have awk command to print column 8 awk '/select/ {print $8}' which will print column 8 But I need to print 3, 5 and 8 column in a row and each column should be de-limited by "\t" Hope anyone help me quickly. (2 Replies)
Discussion started by: elamurugu
2 Replies

Featured Tech Videos