Я хочу понять, как использовать команду awk cat, потому что я думаю, что не понимаю
Вэта страницаон предложил мне использовать его код
g2.txt
Сначала вам следует выполнить следующую обработку :
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
Затем используйте его как:
awk -f join2.awk g2.txt g1.txt
Но я не понимаю, как использовать и реализовать эту команду cat join2.awk
с его кодом добавления. Обычно, из командной строки, я использую awk -f join2.sh g2.txt g1.txt
, почему join2.awk
? (Я использую awk под windows)
Это мой оригинальный код, 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]
}
}
Я не понимаю, как пользоватьсяегодополнительный код. Мне нужно интегрировать его в свой? Мне нужно создать еще один скрипт?
Что это значит "Сначала вам следует обработать g2.txt
вот так?
Как выполнить этот код?Можете ли вы показать мне, пожалуйста? Потому что awk -f join2.awk g2.txt g1.txt
этого недостаточно, мне нужно найти способ использовать before cat join2.awk
и я не понимаю, как реализовать его код и выполнить его
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