Beobachten Sie mit dem Befehl awk

1962
user1271772

Wie schaust du dir einen Befehl an?

awk 'NR%2==0 ' filename.txt 

Wenn Sie vorher "watch" angeben, wird dieser Fehler angezeigt:

awk: cmd. line:1: fatal: cannot open file `'" filename.txt 

2. Setzen Sie den Befehl in einfache Anführungszeichen

Innerhalb Apostrophe, weder "noch $müssen maskiert werden. Es ist jedoch nicht möglich, einfache Anführungszeichen in eine Zeichenfolge mit einfachen Anführungszeichen einzufügen. Wenn wir ein einfaches Anführungszeichen benötigen, beenden Sie die Zeichenfolge mit einem Anführungszeichen und fügen ein Escape-Zeichen hinzu \'. Es sieht aus wie das:

watch 'awk '\''NR%2==0 '\' filename.txt 

3. Hybrider Ansatz

Wenn Sie beide Optionen kombinieren, setzen wir den ersten Teil der Zeichenfolge in doppelte Anführungszeichen und den zweiten Teil in einfache Anführungszeichen:

watch "awk 'NR%2==0 '\' filename.txt 

4. Nicht zitiert, aber vollständig entkommen

Wenn wir den Befehl nicht in Anführungszeichen setzen, müssen wir alle benötigten Shell-aktiven Zeichen mit Escapezeichen versehen. Dazu gehören Leerzeichen, Anführungszeichen, geschweifte Klammern und Dollarzeichen:

watch awk\ \'NR%2==0 \\' filename.txt 
1
2) http://www.linuxquestions.org/questions/linux-general-1/watch-with-awk-786942/ user1271772 vor 8 Jahren 0
3) http://ubuntuforums.org/showthread.php?t=1554848 user1271772 vor 8 Jahren 0
4) http://www.linuxquestions.org/questions/linux-general-1/escape-characters-in-watch-command-763327/ user1271772 vor 8 Jahren 0
Ich konnte nicht einmal mehr als 2 Links in meiner Frage posten, weil dafür ein Ruf von 10 Punkten benötigt wird. Deshalb habe ich sie als Kommentar gepostet user1271772 vor 8 Jahren 0
Verwandte: [Verwenden des Befehls watch mit einem Argument, das Anführungszeichen enthält] (https://superuser.com/q/276701/358758) Marc.2377 vor 7 Jahren 0

1 Antwort auf die Frage

4
John1024

Es gibt vier Ansätze.

1. Setzen Sie den Befehl in Anführungszeichen

Sowohl die Anführungszeichen als auch die Dollarzeichen müssen nicht beachtet werden:

watch "awk 'NR%2==0 '" filename.txt 

2. Setzen Sie den Befehl in einfache Anführungszeichen

Innerhalb Apostrophe, weder "noch $müssen maskiert werden. Es ist jedoch nicht möglich, einfache Anführungszeichen in eine Zeichenfolge mit einfachen Anführungszeichen einzufügen. Wenn wir ein einfaches Anführungszeichen benötigen, beenden Sie die Zeichenfolge mit einem Anführungszeichen und fügen ein Escape-Zeichen hinzu \'. Es sieht aus wie das:

watch 'awk '\''NR%2==0 '\' filename.txt 

3. Hybrider Ansatz

Wenn Sie beide Optionen kombinieren, setzen wir den ersten Teil der Zeichenfolge in doppelte Anführungszeichen und den zweiten Teil in einfache Anführungszeichen:

watch "awk 'NR%2==0 '\' filename.txt 

4. Nicht zitiert, aber vollständig entkommen

Wenn wir den Befehl nicht in Anführungszeichen setzen, müssen wir alle benötigten Shell-aktiven Zeichen mit Escapezeichen versehen. Dazu gehören Leerzeichen, Anführungszeichen, geschweifte Klammern und Dollarzeichen:

watch awk\ \'NR%2==0 \\' filename.txt