Sponsored Content
Top Forums Shell Programming and Scripting [sed]: syntax to insert N spaces in front of a string Post 302980733 by Don Cragun on Thursday 1st of September 2016 04:16:55 PM
Old 09-01-2016
You could also try one of these three portable ways to do it. (Note that the behavior of echo -e is not defined by the standards and varies from shell to shell and operating system to operating system when the 1st argument has a minus sign as its first character (as in -e) and whenever any of its arguments contains a backslash character.
Code:
#!/bin/ksh
v='HOST_CDH_ID
STD_STDOID_CD
FUNCENV_CDH_ID
METDVERS_OID_ID
METDVERS_NAME_LB
VERSFLDR_MATROID_CD
VERSFLDR_PRMRFORMOID_CD
VERSFLDR_STDEVNTOID_CD
VERSFLDR_MAND_FL
VERSFLDR_STDEVNTDEFNAME_LB
VERSFLDR_STDEVNTDEFREPT_LB
VERSFLDR_STDEVNTDEFTYPE_LB
VERSFLDR_ORDRNUMB_NO
VERSFLDR_ATTRVERSFOLD_JS
VERSFLDR_CDH_ID'

val1=10
var=$(printf '%s\n' "$v" | awk -v val1="$val1" '{printf("%*s%s\n", val1, "", $0)}')
printf 'var has been set to:\n%s\n' "$var"

var2=$(printf '%s\n' "$v" | while IFS= read -r line
	do	printf '%*s%s\n' "$val1" '' "$line"
	done
)

if [ "$var" != "$var2" ]
then	printf 'var2 has been set to:\n%s\n' "$var2"
else	printf 'var2 is identical to var\n'
fi

var3=$(awk -v val1="$val1" '{printf("%*s%s\n", val1, "", $0)}' <<EOF
$v
EOF
)

if [ "$var" != "$var3" ]
then	printf 'var3 has been set to:\n%s\n' "$var3"
else	printf 'var3 is identical to var\n'
fi

This is shown using a Korn shell, but will work with any shell that conforms to the POSIX standards.

If you want to try this on a Solaris/SunOS system, change the calls to awk to use /usr/xpg4/bin/awk or nawk.

The output from the above script is:
Code:
var has been set to:
          HOST_CDH_ID
          STD_STDOID_CD
          FUNCENV_CDH_ID
          METDVERS_OID_ID
          METDVERS_NAME_LB
          VERSFLDR_MATROID_CD
          VERSFLDR_PRMRFORMOID_CD
          VERSFLDR_STDEVNTOID_CD
          VERSFLDR_MAND_FL
          VERSFLDR_STDEVNTDEFNAME_LB
          VERSFLDR_STDEVNTDEFREPT_LB
          VERSFLDR_STDEVNTDEFTYPE_LB
          VERSFLDR_ORDRNUMB_NO
          VERSFLDR_ATTRVERSFOLD_JS
          VERSFLDR_CDH_ID
var2 is identical to var
var3 is identical to var

Note that unless $v expands to a HUGE string, using shell built-ins (as in the way var2 is assigned in the above script) will be faster than invoking awk (or sed or any other external utility).
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

how to remove spaces in a string using sed.

Hello, I have the following to remove spaces from beginning and end of a string. infile=`echo "$infilename" | sed 's/^ *//;s/ *$//` How do I modify the above code to remove spaces from beginning, end and in the middle of the string also. ex: ... (4 Replies)
Discussion started by: radhika
4 Replies

2. Shell Programming and Scripting

sh, ksh: command to remove front spaces from a string?

dear pro-coders, is there any command out there that takes out the front spaces from a string? sample strings: 4 members 5 members 3 members but it has to be like so: 4 members 5 members 3 members (3 Replies)
Discussion started by: pseudocoder
3 Replies

3. UNIX for Dummies Questions & Answers

Can I use sed to insert a string which has colon

Hi, all, I wonder if I can use sed to insert a string which has a colon. I have a txt file a.txt like the following TRAIN/DR1/FCJF0/SI1027.MFC TRAIN/DR1/FCJF0/SI1657.MFC I want to insert a string C:/TIMIT/TIMIT at the begining of each line. I use the commond: TIM=C\:/TIMIT/TIMIT... (2 Replies)
Discussion started by: Jenny.palmy
2 Replies

4. Shell Programming and Scripting

sed: replace string with another string (with spaces)

Hi I have an XML file with strings XABCD, XEFGHX and XIJKLX. I would like to replace XABCDX with "This is the first string", XEFGHX with "This is the second string" and XIJKLX with "This is the third string". What is the best way to implement this? Should I have a file with the data that is... (4 Replies)
Discussion started by: zmfcat1
4 Replies

5. Shell Programming and Scripting

Using sed to replace a string in file with a string in a variable that contains spaces

Hi, i call my shell like: my_shell "my project name" my script: #!/bin/bash -vx projectname=$1 sed s/'PROJECT_NAME ='/'PROJECT_NAME = '$projectname/ <test_config_doxy >temp cp temp test_config_doxy the following error occurres: sed s/'PROJECT_NAME ... (2 Replies)
Discussion started by: vivelafete
2 Replies

6. Shell Programming and Scripting

insert predefine text in front and on a loop

Hi Experts, I wish to insert predefined text in front of every line and this needs to be in a loop because it is always expanding. Before : 11111111 22222222 33333333 44444444 55555555 77777777 88888888 00000000 To be Inserted : a= b= (2 Replies)
Discussion started by: masayangbata
2 Replies

7. UNIX for Dummies Questions & Answers

Insert a break page after certain string using SED

Hi: I have 2 files: teststring.txt and a tempfile.txt teststring file contains: s/Primary Ins./\n1/g I'm trying to search for "Primary Ins." string in tempfile. For every "Primary Ins." string that is found, a new line is inserted and put in number 1. Then, write out the newfile... (7 Replies)
Discussion started by: newbeee
7 Replies

8. Shell Programming and Scripting

sed delete leading spaces in a .csv if not in a string

Solaris, ksh I have a .csv file I am trying to clean up before loading into the database. The file contains comma separated columns that have leading spaces which I need to remove. The trouble is, some columns that should not be touched are strings which happen to have the same pattern in them. ... (4 Replies)
Discussion started by: gary_w
4 Replies

9. Shell Programming and Scripting

Insert a single quote in front of a line in vi editor

Hello Gurus, I wanted to put a single quote in every where starting with /oradata, and at the end with .dbf. For example I have one line as below: alter database rename datafile /oradata/test.dbf to /oradata_new/test.dbf I wanted as below alter database rename datafile '/oradata/test.dbf' to... (3 Replies)
Discussion started by: pokhraj_d
3 Replies

10. Shell Programming and Scripting

Sed, Inline replacement of string with spaces

Hello, Just surfed on the web for probable answers but could not get them working. I wish to replace the string containing spaces by another phrase but below answers did not work. My string is: PAIN & GAIN I wish to convert it to: P&G I just need it working with sed with function -i ... (6 Replies)
Discussion started by: baris35
6 Replies
All times are GMT -4. The time now is 12:23 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy