Getting strings before and after a character


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Getting strings before and after a character
# 1  
Old 01-15-2009
Getting strings before and after a character

OK This one has me stumped. I have the following line,
program name - the program description that can also contain a hyphen - character.

I'm need to separate the "program name" from the program description.

I've tried using an array function with the - as delimiter, but I ran into a problem when I discovered some of the files I'm handling contain this second hyphen.

Using this code results in output that's out of order:
Code:
    split(s, array1, "-")
    for (i in array1) {
      print "ARRAY "i": " array1[i]
    }

Output:
Code:
ARRAY 2:  the program description that can also contain a hyphen 
ARRAY 3:  character.
ARRAY 1: program name

I use the array1[1] no problem, but how do I use the 2+ arrays?

I'm open to alternate methods for splitting this line of text.
# 2  
Old 01-15-2009
Hammer & Screwdriver Maybe this will assist you

I substituted the ~ for the first - and then my awk does formatted print to demonstrate that it sees two fields.

Code:
> cat file143
program 1 - program to do this
program 2 - program to do that - and the other
program 3 - program to do nothing
program 4 - program that wishes - it would do something
> sed 's/-/~/' file143 | awk -F"~" '{print "Program="$1"and info="$2}'
Program=program 1 and info= program to do this
Program=program 2 and info= program to do that - and the other
Program=program 3 and info= program to do nothing
Program=program 4 and info= program that wishes - it would do something

# 3  
Old 01-15-2009
Joey

I took your substitution idea and worked out the following:
Code:
    sub(/-/,"~",s)
    split(s, array1, "~")

This produced the results I needed.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to remove certain character strings with awk?

Hi all, I need to remove DBPATH= and /db from the string below using awk (or sed, as it also exists on the machine). Input: DBPATH=/some/path/database/db Desired output: /some/path/database Thank you! (8 Replies)
Discussion started by: ejianu
8 Replies

2. UNIX for Dummies Questions & Answers

Extracting 22-character strings from text using sed/awk?

Here is my task, I feel sure this can be accomplished with see/awk but can't seem to figure out how. I have large flat file from which I need to extract every case of a pairing of characters (GG) in this case PLUS the previous 20 characters. The output should be a list (which I plan to make... (17 Replies)
Discussion started by: Twinklefingers
17 Replies

3. Shell Programming and Scripting

Find position of character in multiple strings in a file

Greetings. I have a file with information like this: AMNDHRKEOEU?AMNDHRKEOEU?AMNDHRKEOEU?AMNDHRKEOEU? AMNDHRKEEU?AMNDHREOEU? AMNDHREU?AHRKEOEU?AMNDHRKEU?AMNDKEOEU? What I need to extract is the position, in every line, of every occurrence of '?' A desired output would be something... (6 Replies)
Discussion started by: Twinklefingers
6 Replies

4. Shell Programming and Scripting

Selecting strings with - as first character in bash

I have a variable containing a list of strings, and want to create a string with the first character being -. Example: var="-name fred paul -surname winnett dimech" I want a string, namely errStr="-name -surname" (2 Replies)
Discussion started by: kristinu
2 Replies

5. UNIX for Dummies Questions & Answers

character-by-character comparison of strings

This might be a dummy question, but is there a command in UNIX that compare two strings character-by-character and display the difference? ---------- Post updated at 11:25 AM ---------- Previous update was at 10:32 AM ---------- Or probably what I'm looking is how to break a string into... (3 Replies)
Discussion started by: Orbix
3 Replies

6. Shell Programming and Scripting

replace two character strings by two variables with sed command

Hello, I want to writte a script that replace two character strings by two variables with the command sed butmy solution doesn't work. I'm written this: sed "s/TTFactivevent/$TTFav/g && s/switchSLL/$SLL/g" templatefile. I want to replace TTFactivevent by the variable $TTFav, that is a... (4 Replies)
Discussion started by: POPO10
4 Replies

7. Shell Programming and Scripting

Change Hex character strings to HTML entities

Hi! I am not a whiz at awk and very unsure about the aplication of awk solve my problem. I was hoping for some quick pointers so I can figure this out. I have a file that looks like so: label.Asked=\u8CEA\u554F\u6E08\u307F button.Edit=\u7DE8\u96C6... (3 Replies)
Discussion started by: pinnochio
3 Replies

8. UNIX for Dummies Questions & Answers

Help to replace character strings

Hello Can Any1 help me. I want to replace a specific character string inside a file at a specific location with a particular character with the help of a command or a shell script. The tr command replaces a specific character with another for all the occurences of that character in the file. I... (5 Replies)
Discussion started by: rahulrathod
5 Replies

9. Shell Programming and Scripting

Finding character mismatch position in two strings

Hello, I would like to find an efficient way to compare a pair of strings that differ at one position, and return the difference and position. For example: String1 123456789 String2 123454789 returning something - position 6, 6/4 Thanks in advance, Mike (5 Replies)
Discussion started by: etherite
5 Replies

10. Shell Programming and Scripting

Perl RegExp to remove last character from strings

I use SAS (a statistical software) and have to remove last character or the last 1/2 numbers that appear after characters from the string using Perl Regular Expression (which is recognized by SAS). Input: f183ii10 f183ii2 f182ii1 f182ii2 f183iim f22ii f22ii11 f22ii12 pmh4 pmhm Desired... (2 Replies)
Discussion started by: ospreyeagle
2 Replies
Login or Register to Ask a Question