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