Visit Our UNIX and Linux User Community


Allignment


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Allignment
# 1  
Old 07-31-2009
Allignment

Hi All,

I want to shift the last and second last line to 8 spaces in the right inside a file. please can somebody suggest a script for the same.

Thanks and Best Regards,
Shazin
# 2  
Old 07-31-2009
tab size is generally 8 spaces.

you can try something like..

Code:
awk -v last_minus_2=$(cat file | wc -l) '{if(NR>(last_minus_2 - 2)) printf "\t%s\n", $0; else print $0 }' file

# 3  
Old 08-03-2009
Hi Anchal,

Many thanks, also please can you describe how this command will work as I have never worked with awk.

Best Regards,
Shazin

---------- Post updated at 12:58 PM ---------- Previous update was at 12:39 PM ----------

Hi Anchal,

Also it is giving Syntax error. Please can you help.

Best Regards,
Shazin
# 4  
Old 08-03-2009
The logic is quite simple,

treat "last_minus_2" as "total_records" ( i have given that name with some other logic in my mind and forgot to change it.)

so,


Code:
awk -v total_records=$(cat file | wc -l) '{if(NR>(total_records - 2)) printf "\t%s\n", $0; else print $0 }' file

now,
Code:
-v total_records=$(cat file | wc -l)

define the awk variable "total_records" that contains the total number of records ( total lines) in the file.

Code:
'{if(NR>(total_records - 2)) printf "\t%s\n", $0; else print $0 }'

NR is an awk system variable which denotes the number of the current record.
so, if that number is "last" or "second last" then append a "\t".


update:

what error are you getting?
# 5  
Old 08-03-2009
Hi Anchal,

Many Thanks.... Got the logic perfectly..... Smilie

I am getting the below error:

Error
awk: syntax error near line 1
awk: bailing out near line 1
# 6  
Old 08-03-2009
can you post exactly what you typed?

---------- Post updated at 01:41 PM ---------- Previous update was at 01:40 PM ----------

also which OS?
# 7  
Old 08-03-2009
Hi Anchal,

I typed the below code:

Code:
awk -v total_records = $( cat redirects.virgin-atlantic.com.conf | wc -l ) '{ if ( NR > ( total_records - 2 ) ) printf "\t%s\n", $0 ; else print $0 }' redirects.virgin-atlantic.com.conf

I am using the below version:
SunOS 5.8 Generic_108528-23 sun4u sparc SUNW,Sun-Fire-280R

Many Thanks,
Shazin

Previous Thread | Next Thread
Test Your Knowledge in Computers #946
Difficulty: Medium
A ping flood attack is a simple DOS attack where the attacker overwhelms the victim with TCP echo request packets.
True or False?

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Allignment input file

Guys, I have a requirement as below 36%/ 55%/var 82%/tmp 74%/opt now i want the output to be --------------------------------- Disk% Mount --------------------------------- 36% / 55% var 82% tmp 74% opt ---------------------------------------- I have used... (3 Replies)
Discussion started by: AraR87
3 Replies

2. Shell Programming and Scripting

awk - script help: column to row format of data allignment?

Experts Good day, I have the following data, file1 BRAAGRP1 A2X B2X C2X D2X BRBGRP12 A3X B3X Z10 D09 BRC1GRP2 LO01 (4 Replies)
Discussion started by: rveri
4 Replies

3. Shell Programming and Scripting

Output allignment

Hi Guys, I hope you are doing good out there. I am facing some issues in the alligment of the output of a shell script. Below is the statement which is formatting the output:echo $File | awk -F '' '{print $13,$15="\t"$16,$4="",$5,$6,$7}' and its output is Domain Log file ... (2 Replies)
Discussion started by: singh.chandan18
2 Replies

4. Shell Programming and Scripting

Text allignment using PERL

Hi Friends, For daily reports i make perl script like below. @dirlist = `cat out.txt |cut -d "|" -f1 >create.txt`; @dirlist1 = `cat out.txt|wc -l *e* >create2.txt`; open FILE, ">OUTPUT.txt"; @command = `cat out.txt |cut -d "|" -f1`; print FILE map{$_-2 ."\n"}@command; @dirlist2 =... (1 Reply)
Discussion started by: adaleru
1 Replies

5. Shell Programming and Scripting

linux 'paste' allignment problem

Hi Everyone, # cat 1 #!/usr/bin/perl print "c\tc\t\n"; # cat 2 #!/usr/bin/perl print "b\tb\t\n"; print "b\tb\t\n"; print "b\tb\t\n"; # perl 1 > 11 # perl 2 > 22 # cat 11 c c # cat 22 b b b b b b # paste 11 22 (5 Replies)
Discussion started by: jimmy_y
5 Replies

6. Shell Programming and Scripting

Allignment of lines in a file

Hi All, I am using the below scrit to insert lines in a file: #!/bin/ksh # To delete the last line if it contains the pattern Redirect permanent / Virgin Atlantic Airways - Popup echo "Enter the URL that should point to the particular microsite" read url # To delete the last line if it... (2 Replies)
Discussion started by: Shazin
2 Replies

Featured Tech Videos