Czy to możliwe z sedem?
Aktualnie jestem w iTunes, używając „Track Name Edit with sed” Skrypty Douga i mam kolekcję utworów zatytułowanych na jeden z dwóch sposobów:
Identical string - Identical string
lub
Some string - some different string
W pierwszym przypadku chcę usunąć jeden z identycznych łańcuchów i środek -
więc zostawiam tylko jedną iterację „Identycznego ciągu”. Jeśli łańcuchy są różne (drugi przypadek), chcę zostawić to w spokoju.
próbowałem s/^(.*) - $1/$1/
, ale wygląda na to, że nie mogę dopasować się do grupy, którą właśnie zdefiniowałem. s/^(.*) - (.*)/$1/
będzie oczywiście działać w pierwszym przypadku, ale niepoprawnie przetworzy drugi przypadek. Czy jest inny sposób na wykorzystanie tych narzędzi?
Odpowiedzi:
ty mogą zdefiniowane grupy referencyjne, ale
sed
używa\n
, nie$n
, za to. Ponadto grupowanie z(
)
działa tylko w trybie „rozszerzonym” (włącz za pomocą-r
opcja):W trybie „podstawowym” używasz:
źródło
to działa, gnuwin32 sed. GNU sed 4.2.1
źródło