Przenieś określoną postać w sed na początek

1

Chciałbym przetworzyć plik zawierający określony znak pośrodku niektórych słów i przenieść go na początek tego słowa. Może również pojawić się na początku słowa, ale w takim przypadku powinien pozostać w pierwotnej pozycji. Znakiem specjalnym jest ~. Mam na myśli:

Oryginalny plik:

This is a sentence with the cha~racter in the middle of a word.
This is a sentence with the ~character at the beginning of a word.
This is a sentence without the character.

Spodziewany wynik:

This is a sentence with the ~character in the middle of a word.
This is a sentence with the ~character at the begining of a word.
This is a sentence without the character.

Czy można to zrobić za pomocą skryptu sed?

Chesús
źródło

Odpowiedzi:

2
$ sed 's/\b\(\w\+\)~\(\w\+\)\b/~\1\2/g' <<< 'This is a sentence with the cha~racter in the middle of a word.
> This is a sentence with the ~character at the beggining of a word.
> This is a sentence without the character.'
This is a sentence with the ~character in the middle of a word.
This is a sentence with the ~character at the beggining of a word.
This is a sentence without the character.
Ignacio Vazquez-Abrams
źródło
0

To może Ci pomóc:

sed 's/\<\([^~][^ ~]*\)~/~\1/g' file
This is a sentence with the ~character in the middle of a word.
This is a sentence with the ~character at the beggining of a word.
This is a sentence without the character.
potong
źródło