Vložit znak na pozici znaku číslo x každého řádku souboru

13.02.2019 napsal Strnad

Vyřešeno insert character at character position on each line of file
Dobrý den,

potřeboval bych upravit v jednom textovém souboru úplně všechny řádky, ty mají tuto strukturu:
0123456789
0123456789
0123456789

Já chci tento tvar:
012345/6789
012345/6789
012345/6789

Konkrétně jde o rodná čísla, do kterých je potřeba za každý šestý znak dopnit lomítko. Tato data původně pocházejí z jednoho sloupce excelu, ale tam jsem tuto operaci vzdal a jsem otevřen všem možnostem. Nemám problém použít linux či třeba python k tomuto přeformátování textu. Hlavní je pro mě, aby to bylo jednoduché řešení, které prostě za každý 6tý znak doplní to lomítko. Předem díky

RE: Vložit znak na pozici znaku…

14.02.2019 odpověděl Rusty

Zkontrolováno

Dobrý den,

zde uvádím tři funkční možnosti z mnoha, jak docílit toho, aby se za každý 6tý znak každého řádku souboru vložilo lomítko.

Linux awk

awk -vFS="" -vOFS="" '{$6=$6"/"}1' soubor.txt

Linux sed

sed 's/.\{6\}/&\//' soubor.txt

Python

Toto univerzální python řešení načte všechny řádky ze soubor.txt a přidá za každý šestý znak lomítko.


def insert_char(str, char, pos):
    return str[:pos] + char + str[pos:]

file = open('soubor.txt')
for line in file:
    print(insert_char(line, '/', 6))

Funkci insert_char() je možné jednoduše upravit na jiný řetězec (str), jiný znak (char) a číselnou pozici (pos).
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace