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?

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.

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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.