program wyciągający dane z pliku TXT

0

Dzień dobry!
Potrzebuję napisać program w języku JAVA który wyciągnie mi dane z pliku TXT.

Dane do wyciągnięcia znajdują się w plikach TXT po określonym ciągu znaków - np.:
screenshot-20201007124704.png

W pliku wynikowym chcę otrzymać te dane oddzielone średnikiem bym mógł stworzyć z tego tabelę w Excelu - np.:
screenshot-20201007125030.png

Pytanie - jak wyciągać dane do końca wiersza po pewnym określonym ciągu znaków?

Pozdrawiam

1

Pattern.compile("Nazwa systemu\s+(.+)") i Pattern.compile("Model Systemu\s+(.+)")

0

Hm. Po wykonaniu:

public class Main
{
    public static void main( String args[] ){

      String line = "Nazwa systemu: DELL12";

      Pattern r = Pattern.compile("Nazwa systemu\s+(.+)");

      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

wynik:

NO MATCH

a oczekuję "DELL12"

1

W Nazwa systemu: DELL12 jest dwukropek, a twoim przykładzie dwukropka nie było - dlatego wyrażenie nie pasuje.

0
ministrant200 napisał(a):

Hm. Po wykonaniu:

public class Main
{
    public static void main( String args[] ){

      String line = "Nazwa systemu: DELL12";

      Pattern r = Pattern.compile("Nazwa systemu\s+(.+)");

      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

wynik:

NO MATCH

a oczekuję "DELL12"

Na pewno masz coś źle w patternie:

Pattern r = Pattern.compile("Nazwa systemu\s+(.+)");

trzeba dopisać dwa znaki : i \

0

Rzeczywiście, dziękuję.

A czy mogę w wyniku uzyskać samo "DELL12"?

1

Skoro te frazy Nazwa systemu, Model systemu masz zafixowane, to czemu po prostu nie robić substringa z użyciem indexOf na danej linii?

0

Ok, super, do tego etapu działa.

Docelowo te dane będę wyciągał z pliku TXT (dane znajdują się w dowolnych liniach) - w zw. z tym pytanie - jak dalej do tego podejść? Czy da się przeszukiwać cały plik aby wyciągnąć tylko te potrzebne dane? Z jakich metod najlepiej skorzystać?

0

@ministrant200:
Widzę, ze kopiesz się z koniem. Po pokonaniu w krwawej bitwie jednego przecinka będziesz miał druga kropkę itd...

Co wytwarza ten plik? Coś mi się wydaje, ze tam należy się profesjonalnie podpiąć

0

Pliki są wynikiem komendy z CMD zawierającej dane komputerów których robię spis. Mam ok. 50 takich plików do obrobienia - każdy ma ok. 4MB.

0
ministrant200 napisał(a):

Pliki są wynikiem komendy z CMD zawierającej dane komputerów których robię spis. Mam ok. 50 takich plików do obrobienia - każdy ma ok. 4MB.

podejrzewam, ze komenda z CMD nie zawiera danych.
Jest jak rząd z porzekadła Margaret Thatcher - nie ma własnych pieniędzy

0

@ministrant200: A sprawdziłeś jakie znaki białe są w tym pliku? Może między opisem a danymi jest tam tabulator zamiast spacji? Wtedy żaden program Ci nie potrzebny tylko importujesz to do Excela czy innego cudownego narzędzia wskazując tabulator jako separator kolumn.

0

Nie chodzi o to aby to tylko podejrzeć. Chcę z tych 50 plików wyciągnąć dane i zrobić spis w formie jednej tabeli.

0
cs napisał(a):

@ministrant200: A sprawdziłeś jakie znaki białe są w tym pliku? Może między opisem a danymi jest tam tabulator zamiast spacji? Wtedy żaden program Ci nie potrzebny tylko importujesz to do Excela czy innego cudownego narzędzia wskazując tabulator jako separator kolumn.

Białe znaki oddzielające opis od danych to tabulatory - mogę więc otworzyć je w Excelu by mieć opis w kolumnie A i dane w kolumnie B. Czy jestem w stanie zgromadzić interesujące mnie dane z tych wszystkich plików w jednej tabeli korzystając tylko z Excela? Jeśli tak to proszę o naprowadzenie jak zrobić to w najprostszy sposób.

1

@ministrant200: No i zrobił się off-top, więc krótko: filtry w Excelu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1