Quiero entender cómo usar el comando awk cat porque creo que no lo entiendo
Enesta páginame sugiere usar su código
Primero debes procesar g2.txt
así:
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
Entonces úsalo como:
awk -f join2.awk g2.txt g1.txt
Pero no entiendo cómo usar e implementar este comando cat join2.awk
con su código adicional. Normalmente, desde la línea de comando, uso awk -f join2.sh g2.txt g1.txt
, ¿por qué join2.awk
? (Yo uso awk en Windows)
Este es mi código original, 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]
}
}
no entiendo como usarlosucódigo adicional. ¿Tengo que integrarlo en el mío? ¿Necesito crear otro script?
Qué significa "Deberías procesar g2.txt
primero así.?
¿Cómo ejecutar este código?¿Me puedes enseñar por favor? Como awk -f join2.awk g2.txt g1.txt
no es suficiente, necesito encontrar una manera de usarlo antes cat join2.awk
y no entiendo cómo implementar su código y ejecutarlo.
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