Ich möchte einem Befehl in meiner .bashrc einen Alias hinzufügen Datei, wie in diesem Beispiel:
alias take_row="cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'"
Aber ich möchte die nrow angeben Variable, wenn ich den Befehl vom Terminal aus starte. Als Beispiel:
take_row 1 –> das Skript nimmt die erste Zeile
take_row 20 –> das Skript nimmt die 20. Zeile ein
Wie schreibe ich in den Befehl so etwas wie <command> | <read nrow user input> , usw.?
Akzeptierte Antwort:
Verwenden Sie eine Funktion anstelle eines Alias, in diesem Fall können Sie auf Positionsparameter wie $1 verweisen usw.
take_row () {
local nrow="$1"
cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'
}
In diesem speziellen Fall können Sie auch die nutzlose Verwendung von cat ansprechen:
take_row () {
local nrow=$1
awk -v nrow="${nrow}" '{if (NR==nrow) print}' prova.csv_001.txt
}
… und machen Sie es noch kürzer, indem Sie unnötigen Code entfernen:
take_row () {
local nrow=$1
awk -v nrow="${nrow}" 'NR==nrow' prova.csv_001.txt
}