Sziasztok,
Hogy lehet megoldani, hogy egy stringból (bcrypt hash-ről van szó,), minden 2. karaktert töröljek, de csak 64 karakterig? (másképpen fogalmazva, minden 2. karaktert törölnöm kellene, egészen addig míg a törölt karaktertek száma eléri a 32-t)
input: $826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG
kívánt output: $2y$12$ZDJjZTI4MzlkOTljYjlmZeU0OFJk9iz8iCE5AODPQx4QkiQjJOVmG
sed-el sikerül, de ez minden 2. karaktert töröl.
command: sed -E 's/(.)./\1/g' file.txt
Megoldható valahogy? Preferált megoldásként sed, awk használata jó lenne.
Köszönöm az ötleteket.
- 1023 megtekintés
Hozzászólások
csak tipp
sed -E 's/(.)./\1/g32' file.txt
forrás: https://unix.stackexchange.com/questions/155805/sed-replace-first-k-ins…
- A hozzászóláshoz be kell jelentkezni
$ echo 'a1b2c3d4e5f6g7h8i9' | sed -E 's/(.)./\1/1g'
abcdefghi
(szerk.:) a lenyeg, hogy a g3 pont a harmadiktol csereli:
$ echo 'a1b2c3d4e5f6g7h8i9' | sed -E 's/(.)./\1/g3'
a1b2cdefghi
t
- A hozzászóláshoz be kell jelentkezni
Ez nem oly elegáns, de nagyjából megteszi:
{
meddig = length();
if ( meddig > 64 )
{
meddig = 64;
hosszu = 1
};
for ( i = 1; i <= meddig; i = i+2 )
{
printf "%s", substr( $0, i, 1 )
};
if ( hosszu == 1 )
{
printf "%s", substr( $0, 65, length()-64 )
}
print ""
}
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Kétfelé vágva a fájlt:
echo $(cut -b-64 file.txt | sed -E 's/(.)./\1/g')$(cut -b65- file.txt)
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Great. Köszönöm az ötleteket.
- A hozzászóláshoz be kell jelentkezni
$ echo '$826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG' | cut -c `seq -s ',' 1 2 63`64-
$2y$12$ZDJjZTI4MzlkOTljYjlmZeU0ObFJk9iz8iCE5AODPQx4QkiQjJOVmG
- A hozzászóláshoz be kell jelentkezni
hmm...Érdekes. Nekem ezt adja vissza.
xenon@Xenon-XR3:~/GYAKORLAS# echo '$826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG' | cut -c `seq -s ',' 1 2 63`64-
$2y$12$ZDJjZTI4MzlkOTljYjlmZeU0
- A hozzászóláshoz be kell jelentkezni
Hm. A seq -s ',' 1 2 63
mit ad? Rak a végére vesszőt?
Nálam:
$ seq -s , 1 2 63
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,
- A hozzászóláshoz be kell jelentkezni
xenon@Xenon-XR3:~# seq -s , 1 2 63
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63
root@Xenon-XR3:~# seq -s ',' 1 2 63
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63
- A hozzászóláshoz be kell jelentkezni
Akkor rakd oda te neki a vesszőt :)
echo '$826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG' | cut -c `seq -s ',' 1 2 63`,64-
A végén a 63`
és a 64-
közé került egy vessző. Ha nincs ott, akkor neked a vége 59,61,6364-
(és ugyebár 6364. karakter nincs). Nekem a vége pedig 59,61,63,64-
.
- A hozzászóláshoz be kell jelentkezni
Köszönöm.
root@Xenon-XR3:~# echo '$826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG' | cut -c `seq -s ',' 1 2 63`,64-
$2y$12$ZDJjZTI4MzlkOTljYjlmZeU0ObFJk9iz8iCE5AODPQx4QkiQjJOVmG
- A hozzászóláshoz be kell jelentkezni
Igazán nincs mit :)
- A hozzászóláshoz be kell jelentkezni
Klassz!
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Ha linuxos cut
, akkor a --complement
-tel még klasszabb lehet, ui. akkor csak a seq -s , 2 2 64
kell. A --complement
-tel nem a 2,4,6,8,...,64. karaktert jeleníti meg, hanem pont azokat törli ki (legalábbis úgy gondolom). FreeBSD-n levő cut
-nak nincs --complement
opciója, ezért kellett a végére a 64-
.
- A hozzászóláshoz be kell jelentkezni
Működik....
root@Xenon-XR3:~# echo '$826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG' | cut --complement -c `seq -s ',' 2 2 64`
$2y$12$ZDJjZTI4MzlkOTljYjlmZeU0OFJk9iz8iCE5AODPQx4QkiQjJOVmG
Ezer hála.
Ha file-bol olvasok be több sort, akkor a 'cat' parancs: cat bcrypts_for_clean.txt | cut --complement -c `seq -s ',' 2 2 64`
a megfelelő?
- A hozzászóláshoz be kell jelentkezni
A cat
el is hagyható, ui. a cut
fogad fájlt is bemenetnek: cut .... bcrypts_for_clean.txt
- A hozzászóláshoz be kell jelentkezni
Valóban "még klasszabb" :-)
--
eutlantis
- A hozzászóláshoz be kell jelentkezni