Przed chwilą było takie samo pytanie, pewnie też twoje, ale nie była podana kolejność parametrów.
Napisałem całość (w Pythonie, bo Delphi nie umiem) i wszystko jest jak opisałeś, tylko kolejność parametrów jest inna... i język się nie zgadza, ale wszystko pokomentowałem, więc mam nadzieję, że pomoże.
#!/usr/bin/env python
#-*- coding: utf-8 -*-
# Program przyjmuje 3 (i 1 opcjonalny) argumenty: plik wejściowy (parsowany), plik wyjściowy (zawierający "tabelę" ze słowami, linią i numerem wyrazu w kolejności oraz literę, na którą mają się rozpoczynać wyrazy, opcjonalny argument to wrażliwość na wielkość liter (t, n) standardowo wrażliwe (t).
import sys
if(len(sys.argv)<4): # Sprawdza czy zostały podane wszystkie argumenty
print "Nie podałeś wszystkich argumentów. Wymagane: plik wejściowy, wyjściowy i litera [oraz opcjonalnie czy wielkość litery ma znaczenie (t, n) standardowo t]. "
sys.exit() # Jak nie to wywala błąd i się wyłącza
if(len(sys.argv)==5): # sprawdza czy jest podany opcjonalny parametr, jeśli tak
if(sys.argv[4]=="n"): # jeśli jego zawartość to "n"
case = False # nie zwracaj uwagi na wielkość znaków
else: # jeśli inna
case = True # zwracaj
else: # jeśli nie podane
case = True # zwracaj
if(case==False): # jeśli nie zwraca uwagi na wielkość znaków
arg = sys.argv[3].lower() # znak wejściowy z małej litery
else: # jeśli nie
arg = sys.argv[3] # pozostaje bez zmian
try: # Program spróbuje...
infile = open(sys.argv[1], "r") # otworzyć plik...
except: # jeśli się nie uda...
print "Nie można otworzyć pliku wejściowego sprawdź czy ścieżka jest poprawna i czy program ma do tego uprawnienia. " # wyświetli taki komunikat błędu...
sys.exit() # i wyjdzie
try: # Program spróbuje...
outfile = open(sys.argv[2], "w+") # otworzyć [utworzyć i otworzyć do zapisu] plik...
except: # jeśli się nie uda...
print "Nie można utworzyć pliku wyjściowego. Czy folder istnieje i czy program ma prawa do tworzenia tam plików? " # wyświetli taki komunikat błędu...
sys.exit() # i wyjdzie...
content = infile.read() # tutaj jest zawartość pliku wejściowego
lines = content.split("\n") # zawartość pliku podzielona na tablice przez znak nowej linii
for i in range(len(lines)-1): # zrób pętle tyle razy ile linii w pliku
for y in range(len(lines[i].split(" "))): # zrób pętle tyle razy ile wyrazów w pliku (oddzielone spacją)
if(case==False): # jeśli nie zwraca uwagi na wielkość
first = lines[i].split(" ")[y][0].lower() # pierwszy znak wyrazu jako mała litera
else: # jeśli zwraca
first = lines[i].split(" ")[y][0] # oryginalna wielkość znaku
if(first==arg): # jeśli pierwszy (zerowy, bo liczymy od zera) znak w pliku jest taki jak trzeci argument (litera, której szukamy)
outfile.write(lines[i].split(" ")[y]+"\t"+str(i+1)+"\t"+str(y+1)+"\n") # zapisuje do pliku wyjściowego wyraz, numer linii, numer kolejności wyrazu w linii, oddzielone tabem, na końcu nowa linia
infile.close() # zamyka plik wejściowy
outfile.close() # zamyka plik wyjściowy
Przykładowy plik wejściowy (test):
To jest testowy tekst
Jeśli program przejdzie poprawnie ten test
to wyświetli wyjście, które mówi o tekście na t
w liniach i wyrazach
1,1 1,3 1,4 2,5 2,6 3,1 3,7 3,9
Komenda:
python literka.py test out t n
Wyjście (out):
To 1 1
testowy 1 3
tekst 1 4
ten 2 5
test 2 6
to 3 1
tekście 3 7
t 3 9
(wyjście jest oddzielone tabami, które formatowanie tutaj zepsuło, ale w edytorze tekstowym wynik wygląda jak tabela)
Mam nadzieję, że pomoże :)