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
}