Strona 1 z 1
sed - zamiana wielkich liter na małe
: 02 marca 2011, 17:48
autor: timo
Dlaczego taki kod
zamienia w liniach ze słowem
numer wielkie litery na dosłowne ciągi
[a-z] zamiast na małe litery?
: 02 marca 2011, 20:15
autor: lessmian2
Bo
s zamienia coś, co pasuje do wzorca w pierwszym
//, a coś, co jest w drugim
//, przy czym to drugie nie jest w żaden sposób interpolowane (nie jest wzorcem, zakresem czy zbiorem znaków). Do tego służy
y, ale akurat w tym przypadku,
sed jest marną namiastką
tr - niżej porównanie tej samej funkcjonalności:
Kod: Zaznacz cały
sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
tr A-Z a-z
I tak, nie da się w sedzie podać
[A-Z] przy użyciu
y 
: 02 marca 2011, 21:09
autor: timo
Tak, tylko, że
tr - z tego co wywnioskowałem z podręcznika systemowego - nie ma funkcji zamiany tylko w wierszach zawierających dane słowo - musiałbym kombinować z grepem, a potem zapisywaniem wyników do odpowiednich linii w pliku źródłowym, więc jednak zdecydowałem się na
sed. Ale dziękuję za pomoc, bo sam kombinując nie wpadłem na ten
y 
: 02 marca 2011, 21:28
autor: lessmian2
To może tak:
Kod: Zaznacz cały
echo 'TEST 1234 TEST' | perl -pne 'y/A-Z/a-z/ if /1234/'
test 1234 test
: 03 marca 2011, 09:52
autor: timo
Faktycznie, działa, dziękuję.