Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Bash Command aus Perl absetzen

Frage Entwicklung Perl

Mitglied: Maveric

Maveric (Level 1) - Jetzt verbinden

11.01.2013 um 15:56 Uhr, 2658 Aufrufe, 6 Kommentare

Moin,
mein Problem liegt glaube ich im Detail, aber ich habe leider keine Lösung finden könnten.
Ich habe ein Perl –Script, mit welchem ich eine Text Datei auswerte und die Ergebnisse, alle mit demselben Muster in eine neue Datei Schreibe. Nachdem das Passiert ist, sind leider von den 50.000 Zeilen ca. 100 die nicht Exakt dem Muster entsprechen und die beste Lösung und vor allem eine sehr schnelle ist für mich ein egrep, welches ich in 1min zusammen geschrieben hatte. Ich schaffe es jedoch nicht, dieses aus dem Perl - Skript aufzurufen.

system("less sqls.txt | egrep '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(,\[)(.*)(\],)([0-9]{4,10})' > out.txt");

Das Statement nimmt die sqls.txt, welche durch das Perl Skript erstellt wurde, nudelt ein egrep drüber und schreibt das in die out.txt.

Mit der Out möchte ich dann im Skript weiter arbeiten.
Also kurz, wie schaffe ich es das er das Bash Statement ausführt?

Viele Grüße
Maveric
Mitglied: jodalein
11.01.2013 um 16:16 Uhr
Hi,

ich habe hier auch ein Perl script wo ich einen Bash aufruf mache. Ich habe auch hin und her probiert und dann am ende einfach ein 2. sh script erstellt was ich über System aufrufe, ist denke ich zwar nicht die eleganteste Lösung aber es klappt super


PERL...
system("SOWIESO.sh")== 0 or die "Bash Script failed";
PERL...

SOWIESO.sh
"CAT" sqls.txt | egrep '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(,\[)(.*)(\],)([0-9]{4,10})' > out.txt


würde hier ein cat nehmen anstatt less (glaube liegt einfach eher nur an der gewonheit)

probiers einfach mal so aus.
Bitte warten ..
Mitglied: bytecounter
11.01.2013 um 16:30 Uhr
Hallo,

warum nutzt Du bash, obwohl doch Perl in diesem Bezug geradezu mächtig ist?

vg
Bytecounter
Bitte warten ..
Mitglied: Maveric
15.01.2013, aktualisiert um 13:00 Uhr
@jodalein Ahoi, ich habe das jetzt so probiert, aber er schlägt immer genau an der Stelle fehl und gibt dem entsprechend die Fehlermeldung "Bash Script failed" aus. Die Idee hat mir aber gefallen, auch wenn es das Script auslagert.
Bitte warten ..
Mitglied: Maveric
15.01.2013 um 13:00 Uhr
Zitat von bytecounter:
Hallo,

warum nutzt Du bash, obwohl doch Perl in diesem Bezug geradezu mächtig ist?

vg
Bytecounter

Weil es eine Zeile Code wäre und ich damit alles erreiche was ich brauche.
Es wäre für die Übersicht sehr gut gewesen, das Script ist eh sehr lang.
Bitte warten ..
Mitglied: bytecounter
15.01.2013, aktualisiert um 15:09 Uhr
Dann würde ich zumindest mal den Fehlercode mit ausgeben:

01.
system("SOWIESO.sh 2>&1")== 0  
02.
        or die "system failed: $?";
Dann könnte man ja zumindest sehen, warum er abbricht.

<edit>
Habe zusätzlich noch die Fehlerausgabe auf die Standardausgabe umgeleitet.
</edit>

vg
Bytecounter
Bitte warten ..
Mitglied: Maveric
17.01.2013 um 13:24 Uhr
Zitat von bytecounter:
Dann würde ich zumindest mal den Fehlercode mit ausgeben:

01.
> system("SOWIESO.sh 2>&1")== 0  
02.
>         or die "system failed: $?"; 
03.
> 
Dann könnte man ja zumindest sehen, warum er abbricht.

<edit>
Habe zusätzlich noch die Fehlerausgabe auf die Standardausgabe umgeleitet.
</edit>

vg
Bytecounter

Ich habe das Problem jetzt wie folgt gelöst. Ich habe anstatt einen Einzeiler grep auf dem
zu erst gedachten weg abzufeuern die Sache jetzt in nativ Perl gelöst, wie auch oben
vorgeschlagen wurde.

Dazu habe ich folgenden Code integriert:

open(MYO, ">>$out");
open(MYI, "<$in");
while(<MYI>){

$linex = $_;

if($linex =~ m/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(,\[)(.*)(\],)([0-9]{4,10})/g){

print MYO $1.$2.$3.$4.$5."\n";

}
}
close(MYO);
close(MYI);

Ich habe zwei Dateien vom Typ Txt als Stream geöffnet und iteriere über jede Zeile von MYI.
Sollte die Zeile mit meinem Regex auf true matchen, dann speichert er sie in den Stream MYO.
Wenn er damit fertig ist, kann ich mit der Geregexten Datei weiterarbeiten.

Viele Grüße
Maveric
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Bash Script soll neue Datei erzeugen (2)

Frage von SpeakerST zum Thema Batch & Shell ...

Linux
gelöst Umlaute zählen - Bash-Script (5)

Frage von plutowitsch zum Thema Linux ...

Perl
gelöst Mit Perl aus einer Datei teilidentische Zeilen löschen (5)

Frage von Jeduja zum Thema Perl ...

Debian
gelöst Bash - String zwischen zwei Kommata ausgeben (3)

Frage von plutowitsch zum Thema Debian ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...