awk sed File 1を使用したリレーショナル列の処理--->列の順序が正しくないデータ(中間テストデータを含む古い古いファイル)
mL9A7hajHyuVIQr1HNP7ThYfj9yBUd
Iq4iqnH4UftLgGUSobLeti0hkmdMn7
BlzanDNcIsgru2wNYlO6kDjpuPvs82
eqOZRXfdcxHqd26Raqd6ZOtPhoQp33
CrWSI2eyZZkkYlEbOoHgu2o43tU3xa
IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7
YuuRhD5f3xju0RnUCjS66g3X2TNNIj
MpJHtG8FjeErwsh6emcCu7B4bHwCnR
aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f
nXgwlL0p8LEWNFGznIy2NUXBWHzZgS
ファイル2 --->同じデータですが最終的な順序です(年間レビュー後の新しいファイルとテスト後の中間データを最終形式に変更)
BlzanDNcIsgru2wNYlO6kDjpuPvs82
CrWSI2eyZZkkYlEbOoHgu2o43tU3xa
IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7
Iq4iqnH4UftLgGUSobLeti0hkmdMn7
MpJHtG8FjeErwsh6emcCu7B4bHwCnR
YuuRhD5f3xju0RnUCjS66g3X2TNNIj
aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f
eqOZRXfdcxHqd26Raqd6ZOtPhoQp33
mL9A7hajHyuVIQr1HNP7ThYfj9yBUd
nXgwlL0p8LEWNFGznIy2NUXBWHzZgS
問題を説明してください。これからは、Final_resultsファイルに何をしても順序を維持しながら、中間テストファイルに同じ変更を反映したいと思います。
<(cat temp_data | nl) <(cat Final_results) 列の貼り付け
1 CrWSI2eyZZkkYlEbOoHgu2o43tU3xa 3 BlzanDNcIsgru2wNYlO6kDjpuPvs82
2 BlzanDNcIsgru2wNYlO6kDjpuPvs82 5 CrWSI2eyZZkkYlEbOoHgu2o43tU3xa
3 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7 6 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7
4 Iq4iqnH4UftLgGUSobLeti0hkmdMn7 2 Iq4iqnH4UftLgGUSobLeti0hkmdMn7
5 aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f 8 MpJHtG8FjeErwsh6emcCu7B4bHwCnR
6 YuuRhD5f3xju0RnUCjS66g3X2TNNIj 7 YuuRhD5f3xju0RnUCjS66g3X2TNNIj
7 MpJHtG8FjeErwsh6emcCu7B4bHwCnR 9 aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f
8 eqOZRXfdcxHqd26Raqd6ZOtPhoQp33 4 eqOZRXfdcxHqd26Raqd6ZOtPhoQp33
9 mL9A7hajHyuVIQr1HNP7ThYfj9yBUd 1 mL9A7hajHyuVIQr1HNP7ThYfj9yBUd
10 nXgwlL0p8LEWNFGznIy2NUXBWHzZgS 10 nXgwlL0p8LEWNFGznIy2NUXBWHzZgS
必須の関係処理。 3 BlzanDNcIsgru2wNYlO6kDjpuPvs82--SUFFIX ---->File2(上記のコマンドの列2)を変更すると、変更6 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7-SUFFIX --->File1(上記のコマンドの列1)が反映されます。
例えば。 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7 テスト前 Fina_results の BlzanDNcIsgru2wNYlO6kDjpuPvs82 です。これで、FinalでBlzanDNcIsgru2wNYlO6kDjpuPvs82に行った操作は、古いファイルのIUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7に反映されるはずです。
問題1希望の出力1
1 CrWSI2eyZZkkYlEbOoHgu2o43tU3xa 3 BlzanDNcIsgru2wNYlO6kDjpuPvs82--SUFFIX
2 BlzanDNcIsgru2wNYlO6kDjpuPvs82 5 CrWSI2eyZZkkYlEbOoHgu2o43tU3xa
3 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7-SUFFIX 6 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7
4 Iq4iqnH4UftLgGUSobLeti0hkmdMn7 2 Iq4iqnH4UftLgGUSobLeti0hkmdMn7
5 aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f 8 MpJHtG8FjeErwsh6emcCu7B4bHwCnR
6 YuuRhD5f3xju0RnUCjS66g3X2TNNIj 7 YuuRhD5f3xju0RnUCjS66g3X2TNNIj
7 MpJHtG8FjeErwsh6emcCu7B4bHwCnR 9 aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f
8 eqOZRXfdcxHqd26Raqd6ZOtPhoQp33 4 eqOZRXfdcxHqd26Raqd6ZOtPhoQp33
9 mL9A7hajHyuVIQr1HNP7ThYfj9yBUd 1 mL9A7hajHyuVIQr1HNP7ThYfj9yBUd
10 nXgwlL0p8LEWNFGznIy2NUXBWHzZgS 10 nXgwlL0p8LEWNFGznIy2NUXBWHzZgS
問題2目的の出力2 2番目のファイルを最初のファイルに置き換えます。
貼り付けコマンド出力3を参照してください。 BlzanDNcIsgru2wNYlO6kDjpuPvs82--SUFFIXには3があります。したがって、最初の列の行3を列4の最初の行に変更し、3番目の列に3を変更する必要があります。同様に、出力全体が列を転置し、最終的に変更されたデータを出力します。
1 mL9A7hajHyuVIQr1HNP7ThYfj9yBUd-Suffix
2 Iq4iqnH4UftLgGUSobLeti0hkmdMn7-Suffix
BlzanDNcIsgru2wNYlO6kDjpuPvs82-Suffix
4 eqOZRXfdcxHqd26Raqd6ZOtPhoQp33-Suffix
5 CrWSI2eyZZkkYlEbOoHgu2o43tU3xa-Suffix
6 IUnZ8VPgw0FuqJmsY6FYfUpMdDNnk7-Suffix
7 YuuRhD5f3xju0RnUCjS66g3X2TNNIj-Suffix
8 MpJHtG8FjeErwsh6emcCu7B4bHwCnR-Suffix
9 aQ1DXaG7XSopgxBeBsRRZcCh2xRu5f-Suffix
10 nXgwlL0p8LEWNFGznIy2NUXBWHzZgS-Suffix
##単純化されたデータ(テストソリューション用)
1 Mina_Warren 2 Ayden_Silva
2 Jazlene_Gibbs 4 Quintin_Glover
3 Kaleigh_Farley 1 Callum_Mckay
4 Callum_Mckay 7 Jazlene_Gibbs
5 Finn_Nelson 6 Mina_Warren
6 Ayden_Silva 3 Kaleigh_Farley
7 Quintin_Glover 5 Finn_Nelson
出力(質問1のみ)
1 Mina_Warren--Suffix3 2 Ayden_Silva---Suffix1
2 Jazlene_Gibbs--Suffix1 4 Quintin_Glover--Suffix2
3 Kaleigh_Farley--Suffix6 1 Callum_Mckay--Suffix3
4 Callum_Mckay--Suffix2 7 Jazlene_Gibbs-Suffix4
5 Finn_Nelson--Suffix7 6 Mina_Warren--Suffix5
6 Ayden_Silva--Suffix5 3 Kaleigh_Farley--Suffix6
7 Quintin_Glover--Suffix4 5 Finn_Nelson-Suffix7
(質問1にのみ適用されます。)ここで、接尾辞---は、--->すべての種類の処理、編集、名前変更、置換などを意味します。 n行、4列のすべての処理はn行、2列に反映されます。 ---> ここで、n番目の行は3番目の列から取得されます。
awk Q1のロジック - 最初のレコードを読む。 --$4列を変数に保存し、列3に示されている行番号に移動します。 $ 3 --次に、$ 2列を$ 4で保存された変数に置き換えます。
考える
1 Mina_Warren 2 Ayden_Silva
2 Jazlene_Gibbs 4 Quintin_Glover
3番目の列は関係編集の行番号です。 質問1の論理 1行目を読む ---> Ayde _Silva を変数に保存 ---> 1行目の$ 3に2があるので、2行目に移動 ---> 2行目の処理でJazlene_Gibbsに対して同じことを行います。
期待される出力質問1
Mina_Warren 2 Ayden_Silva--Suffix1
2 Jazlene_Gibbs--Suffix1 4 Quintin_Glover
質問2の論理行1を転置して読み込みます---> Ayde_Silvaを変数に保存します--->行1の$ 3に2があるので、行2に移動します--->今行2でAyde_Silveの処理を使用します Jazlene_Gibbs置き換えるバージョン--->ループ内のすべての行に対してこれを行います。 --->列3と4を削除します。
期待される出力質問2
1 Callum_Mckay--Suffix3
2 Ayden_Silva--Suffix1
3 Kaleigh_Farley--Suffix6
4 Quintin_Glover--Suffix2
5 Finn_Nelson--Suffix7
6 Mina_Warren--Suffix5
7 Jazlene_Gibbs--Suffix4
試験を終えた
in="$(awk 'END { print NR }' 1)" file
awk -v ty=$in '{for (i=1;i<=ty;i++) NR==$i; var=$4; varb=$3; NR == varb; $2=var; print}' file
しかし、期待どおりに動作しません。私が試したことは=合計レコード数7の次のforループを使用して7回繰り返すことです ---> i ==1 ##goto rrcord 1 - -> store $4 In var, store $3 in varb --> NR==varb ## varbで指定されたレコードに移動します(例:2)。 $ 2をvarに置き換えます。 Loop ---> i = 2レコード2に移動し、同じ
ベストアンサー1
使用CPAPWK:
先月に開発された新製品です。
cppawk
前処理、通常のAwkへの入力生成にCプリプロセッサを使用し、Lispなどのリスト処理、高度な反復、およびその他のユーティリティ用のいくつかのライブラリヘッダーが付属しています。
質問1:
#include <cons.h>
BEGIN {
bag = list_begin()
}
{
left[$1] = $2
right[$3] = $4
leftn[$3] = $1
bag = list_add(bag, $3)
}
END {
finlist = list_end(bag)
dolist (i, finlist)
{
left[i] = left[i] "--Suffix" ++suff
right[i] = right[i] "--Suffix" suff
}
dolist (i, finlist)
{
print leftn[i], left[leftn[i]], i, right[i]
}
}
出力:
cppawk -f prob-1.cwk prob-1-data
1 Mina_Warren--Suffix3 2 Ayden_Silva--Suffix1
2 Jazlene_Gibbs--Suffix1 4 Quintin_Glover--Suffix2
3 Kaleigh_Farley--Suffix6 1 Callum_Mckay--Suffix3
4 Callum_Mckay--Suffix2 7 Jazlene_Gibbs--Suffix4
5 Finn_Nelson--Suffix7 6 Mina_Warren--Suffix5
6 Ayden_Silva--Suffix5 3 Kaleigh_Farley--Suffix6
7 Quintin_Glover--Suffix4 5 Finn_Nelson--Suffix7
質問2:
#include <cons.h>
BEGIN {
bag = list_begin()
}
{
left[$1] = $2
right[$3] = $4
leftn[$3] = $1
bag = list_add(bag, $3)
}
END {
finlist = list_end(bag)
dolist (i, finlist)
{
left[i] = right[i] "--Suffix" ++suff
}
dolist (i, finlist)
{
print leftn[i], left[leftn[i]]
}
}
出力:
cppawk -f prob-2.cwk prob-1-data
1 Callum_Mckay--Suffix3
2 Ayden_Silva--Suffix1
3 Kaleigh_Farley--Suffix6
4 Quintin_Glover--Suffix2
5 Finn_Nelson--Suffix7
6 Mina_Warren--Suffix5
7 Jazlene_Gibbs--Suffix4