我想了解如何使用 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
? (我在windows下使用awk)
這是我原來的程式碼,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
還不夠,我需要找到一種以前使用的方法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