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.

  • Extrahieren Sie jede Sequenzdaten als einzelne Datei
  • Python entfernt Telefonnummern aus String
  • Filtertext, der zwischen zwei Markierungen erscheint
  • Entfernen von duplizierten Zeilen aus einer txt-Datei
  • Entfernen von In-Feld-Anführungszeichen in csv-Datei
  • Bash-Skript, um eine einzelne Python-Funktion aus einer Datei auszuwählen
  • Split eine Datei in mehrere Dateien basierend auf Muster (Schnitt kann in Zeilen auftreten)
  • Wie mache ich eine Reihe regex in Rubin wie awk / start /, / stop /
  • Sortiere ein Feld in aufsteigender Reihenfolge und lösche die erste und letzte Zahl
  • Aufteilen von Werten basierend auf Werten in einer bestimmten Spalte
  • Mehrere Regex-Ersetzungen basierend auf Listen in mehreren Dateien
  • Python ist die beste Programmiersprache der Welt.