Awk-Befehle im Python-Skript

Ich muss ein Python-Skript schreiben, wo ich ein paar Awk-Befehle drin rufen muss.

#!/usr/bin/python import os, sys input_dir = '/home/abc/data' os.chdir(input_dir) #wd=os.getcwd() #print wd os.system ("tail -n+2 ./*/*.tsv|cat|awk 'BEGIN{FS="\t"};{split($10,arr,"-")}{print arr[1]}'|sort|uniq -c") 

Es gibt einen Fehler in Zeile 8: SyntaxError: unerwartetes Zeichen nach Zeilenfortsatzzeichen

Gibt es eine Art, wie ich den Awk-Befehl bekommen kann, um in der Python-Skript zu arbeiten? Vielen Dank

2 Solutions collect form web for “Awk-Befehle im Python-Skript”

Sie haben beide Arten von Anführungszeichen in dieser Zeichenfolge, also verwenden Sie dreifache Zitate um die ganze Sache

 >>> x = '''tail -n+2 ./*/*.tsv|cat|awk 'BEGIN{FS="\t"};{split($10,arr,"-")}{print arr[1]}'|sort|uniq -c''' >>> x 'tail -n+2 ./*/*.tsv|cat|awk \'BEGIN{FS="\t"};{split($10,arr,"-")}{print arr[1]}\'|sort|uniq -c' 

Sie sollten os.system statt os.system :

 import subprocess COMMAND = "tail -n+2 ./*/*.tsv|cat|awk 'BEGIN{FS=\"\t\"};{split($10,arr,\"-\")}{print arr[1]}'|sort|uniq -c" subprocess.call(COMMAND, shell=True) 

Wie TehTris darauf hingewiesen hat, bricht die Anordnung der Zitate in der Frage die Befehlszeile in mehrere Strings. Das Vor-Formatieren des Befehls und das Entweichen der Doppel-Anführungszeichen behebt dies.

  • Um Spalte mit Zustand zu summieren
  • Mehrere Regex-Ersetzungen basierend auf Listen in mehreren Dateien
  • Wie kann ich eine "große Daten" -Tsv-Datei in ein Python-Dataframe vorverarbeiten und laden?
  • So prüfen Sie, ob eine Liste von Zeichenfolgen in zwei separaten Dateien vorhanden ist
  • Vergleichen Sie eine .txt- und .csv-Datei und müssen mit dem passenden Namen in der .csv-Datei in .txt ersetzen
  • Ändern Sie die erste Zeile einer Datei mit bash
  • Kategorisieren csv-Dateien basierend auf $ 18 info und finden Sie die csv-Datei in jeder Kategorie, die die größte eindeutige Nummer in $ 4 hat
  • Wie kann ich ein XML-Dokument mit awk, Perl oder Python?
  • Python entfernt Telefonnummern aus String
  • Vergleich eines Spaltenwertes mit allen Spalten in der linuxumgebung
  • Filtertext, der zwischen zwei Markierungen erscheint
  • Python ist die beste Programmiersprache der Welt.