Swap two characters in a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Swap two characters in a string
# 1  
Old 07-14-2017
Swap two characters in a string

I want to swap hyphen (-) and underscore (_) in a string. In fact only one will be present. So if it is hyphen I want to make it underscore and if it is underscore I want to make it hyphen.

I can write a long code like below. Is there any easy way?

Code:
#!/bin/ksh
 
typeset -i exists
str="ag-sd"
 
new_str=$str
 
exists=`print $new_str | grep "\-" | wc -l`
if [[ $exists -eq 1 ]]
then
   str=`print $new_str | sed 's/\-/\_/g'`
fi
 
exists=`print $new_str | grep "\_" | wc -l`
if [[ $exists -eq 1 ]]
then
   str=`print $new_str | sed 's/\_/\-/g'`
fi
 
print "Old string $new_str"
print "New string $str"

# 2  
Old 07-14-2017
Hi.

This looks like it does what you wish:
Code:
$ cat z8; tr '_-' '-_' < z8
abc-def_hij-klm_nop-qrs_tuv-wxy_z
abc_def-hij_klm-nop_qrs-tuv_wxy-z

and
Code:
$ echo "$s" ; echo "$s" | tr '_-' '-_'
abc-def_hij-klm_nop-qrs_tuv-wxy_z
abc_def-hij_klm-nop_qrs-tuv_wxy-z

For a system like:
Code:
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.8 (jessie) 
tr (GNU coreutils) 8.23

Best wishes ... cheers, drl
This User Gave Thanks to drl For This Post:
# 3  
Old 08-17-2017
In sed you can use the y command
Code:
str='abc-def_hij-klm_nop-qrs_tuv-wxy_z'
newstr=`printf "%s\n" "$str" | sed 'y/_-/-_/'`
printf "%s\n" "$str" "$newstr"

# 4  
Old 08-17-2017
With awk:
Code:
$ echo a_b-cc_dd_ee-ff | awk '{for(i=1; i<=NF; i++) gsub(OFS,FS,$i)}1'  FS=- OFS=_
a-b_cc-dd-ee_ff



--
ksh93:
Code:
$ echo "$var"
a_b-cc_dd_ee-ff
$ var2=${var//-/+} var2=${var2//_/-} var2=${var2//+/_}
$ echo "$var2"
a-b_cc-dd-ee_ff


Last edited by Scrutinizer; 08-17-2017 at 05:58 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Outputting characters after a given string and reporting the characters in the row below --sed

I have this fastq file: @M04961:22:000000000-B5VGJ:1:1101:9280:7106 1:N:0:86 GGGGGGGGGGGGCATGAAAACATACAAACCGTCTTTCCAGAAATTGTTCCAAGTATCGGCAACAGCTTTATCAATACCATGAAAAATATCAACCACACCA +test-1 GGGGGGGGGGGGGGGGGCCGGGGGFF,EDFFGEDFG,@DGGCGGEGGG7DCGGGF68CGFFFGGGG@CGDGFFDFEFEFF:30CGAFFDFEFF8CAF;;8... (10 Replies)
Discussion started by: Xterra
10 Replies

2. Shell Programming and Scripting

Cut a string for last 8 characters

Hello All I have a file like this abc.tpt.ctl bdc.tpt.ctl cdw.tpt.ctl I have looped every line using the for Loop, now I want to take each line and cut the .tpt.ctl part of it and store it in a variable and use the variable in same loop. The part I am stuck at is how do I cut the last... (9 Replies)
Discussion started by: nnani
9 Replies

3. Linux

string characters in UNIX

I need some help. when i use the following command, it deletes all lines containing WINNT& v2010 and WINNT& v2010.2 I just want it to delete lines containing WINNT & v2010 only. perl -n -i.bak -e 'print unless /WINNT/&&/v2010/' *.* Danish (2 Replies)
Discussion started by: sdanish110
2 Replies

4. Shell Programming and Scripting

remove characters from string based on occurrence of a string

Hello Folks.. I need your help .. here the example of my problem..i know its easy..i don't all the commands in unix to do this especiallly sed...here my string.. dwc2_dfg_ajja_dfhhj_vw_dec2_dfgh_dwq desired output is.. dwc2_dfg_ajja_dfhhj it's a simple task with tail... (5 Replies)
Discussion started by: victor369
5 Replies

5. Programming

Swap different size string

how can I write a function to swap to different sized string? (2 Replies)
Discussion started by: rupeshkp728
2 Replies

6. HP-UX

Swap device file and swap sapce

Hi I have an integrity machine rx7620 and rx8640 running hp-ux 11.31. I'm planning to fine tune the system: - I would like to know when does the memory swap space spill over to the device swap space? - And how much % of memory swap utilization should be specified (swap space device... (6 Replies)
Discussion started by: lamoul
6 Replies

7. Shell Programming and Scripting

get certain characters in a string

Hi Everyone, I have a.txt 12341" <sip:191@vo.my>;asdf=q" 116aaaa<sip:00091@vo.my>;penguin would like to get the output 191 00091 Please advice. Thanks (4 Replies)
Discussion started by: jimmy_y
4 Replies

8. Shell Programming and Scripting

number of characters in a string

Hi there, I have some user input in a variable called $VAR, and i need to ensure that the string is 5 or less characters .... does anybody know how i can count the characters in the variables ? any help would be great, cheers (2 Replies)
Discussion started by: rethink
2 Replies

9. UNIX for Advanced & Expert Users

split a string into 3 characters

Hi, I have a requirement like this. String=abcdefghijkl I need to split this string into a substrign each 3 characters and write output into a file. Output: abc def ghi jkl Can any one please help me how can i acheive this Thanks (3 Replies)
Discussion started by: ukatru
3 Replies

10. Shell Programming and Scripting

Add string after another string with special characters

Hello everyone, I'm writing a script to add a string to an XML file, right after a specified string that only occurs once in the file. For testing purposes I created a file 'testfile' that looks like this: 1 2 3 4 5 6 6 7 8 9 And this is the script as far as I've managed: ... (2 Replies)
Discussion started by: heliode
2 Replies
Login or Register to Ask a Question