Ich möchte verstehen, wie man den Befehl awk cat verwendet, weil ich glaube, nicht zu verstehen
Indiese Seiteer schlägt mir vor, seinen Code zu verwenden
g2.txt
So solltest du zunächst vorgehen :
cat join2.awk
BEGIN {
OFS=FS=";"
}
ARGIND == 1 {
map[$2] = ($2 in map ? map[$2] OFS : "") $1
next
}
{
r = $0;
for (i=1; i<=NF; ++i)
if ($i in map)
r = r OFS map[$i]
$0 = r
}
1
Dann verwenden Sie es als:
awk -f join2.awk g2.txt g1.txt
Aber ich verstehe nicht, wie ich diesen Befehl cat join2.awk
mit seinem Zusatzcode verwenden und implementieren soll. Normalerweise verwende ich in der Befehlszeile , awk -f join2.sh g2.txt g1.txt
warum join2.awk
? (Ich verwende awk unter Windows)
Dies ist mein Originalcode, join2.sh
#! /usr/bin/awk -f
BEGIN {
OFS=FS=";"
C=0;
}
{
if (ARGIND == 1) {
X = $NF
T0[$NF] = C++
$NF = ""
if (T1[X]) {
T1[X] = T1[X] $0
} else {
T1[X] = $0
}
} else {
X = $NF
T0[$NF] = C++
$NF = ""
if (T2[X]) {
T2[X] = T2[X] $0
} else {
T2[X] = $0
}
}
}
END {
for (X in T0) {
# concatenate T1[X] and X, since T1[X] ends with ";"
print T1[X] X, T2[X]
}
}
Ich verstehe nicht, wie manseinzusätzlicher Code. Muss ich ihn in meinen integrieren? Muss ich ein weiteres Skript erstellen?
Was bedeutet das?g2.txt
So sollten Sie zunächst vorgehen?
Wie führe ich diesen Code aus?Können Sie es mir bitte zeigen? Weil awk -f join2.awk g2.txt g1.txt
das nicht ausreicht, muss ich einen Weg finden, es vorher zu verwenden cat join2.awk
, und ich verstehe nicht, wie man seinen Code implementiert und ausführt
cat join2.awk
BEGIN {
OFS=FS=";"
}
ARGIND == 1 {
map[$2] = ($2 in map ? map[$2] OFS : "") $1
next
}
{
r = $0;
for (i=1; i<=NF; ++i)
if ($i in map)
r = r OFS map[$i]
$0 = r
}
1