• Online Tools
  • - Calculators
    • Character Count
  • - Download
    • TikTok Download
    • DouYin Download
  • - Web Tools
    • BASE64
    • Base64 to Image
    • Image to Base64
    • URL Encoding
    • JavaScript
    • Timestamp
    • Unicode Converter
    • JSON Format
    • Modify Extension
    • Make List
    • CSS Optimizer
  • - Encryption Tools
    • MD5 Encryption
    • Random Generator
  • - Image Tools
    • Image Compression
    • QR Code Generator
    • QR Code Reader
    • Wallpaper Preview
    • Image EXIF
  • - Info Sheets
    • Blood Type Heredity
    • Clothing Sizes
    • app.tool_clock
  • [email protected]
DopuBox
  • English
  • Español
  • Français
  • 日本語
  • 한국어
  • 简体中文
  • 繁體中文
全部 ニュース Meta Code 文化・アート
Linuxはawkテキスト処理ツールを使用して配列をソートする方法
2021-12-10

Linuxシステムの操作ではawkはテキスト処理ツールであり、多くの機能を提供していますが、awkを使用して配列ソートを行うにはどうすればいいのでしょうか。実はawk配列のソート方法はいろいろありますが、Linuxでawkを使って配列をソートする方法について詳しく紹介します。

コードは次のとおりです。

  [chengmo@localhost ~]$ awk ‘BEGIN{info = “this is a test”;split(info,tA,“ ”);for(k in tA){print k,tA[k];}}’

  4 test

  1 this

  2 is

  3 a

順番に出力する必要がある場合は、キー値位置決め方式で出力します。

コードは次のとおりです。

  [chengmo@localhost ~]$ awk ‘BEGIN{info = “this is a test”;slen=split(info,tA,“ ”);for(i=1;i《=slen;i++){print i,tA[i];}}’

  1 this

  2 is

  3 a

  4 test

一、組み込み関数(asort、asorti使用)awk 3.1以上のバージョンでサポートする

1、asort使用説明

src arrlen=asort〔srcarr,dscarr〕のデフォルトの戻り値は、元の配列長であり、入力パラメータdscarrは、ソート後の配列をdscarrに割り当てる.

コードは次のとおりです。

  [chengmo@localhost ~]$ awk ‘BEGIN{

  a[100]=100;

  a[2]=224;

  a[3]=34;

  slen=asort(a,tA);

  for(i=1;i《=slen;i++)

  {print i,tA[i];}

  }’

  1 34

  2 100

  3 224

asortは値のみをソートするため、元のキー値を捨てます。

2、asorti使用説明

コードは次のとおりです。

  [chengmo@localhost ~]$ awk ‘BEGIN{

  a[“d”]=100;

  a[“a”]=224;

  a[“c”]=34;

  slen=asorti(a,tA);

  for(i=1;i《=slen;i++)

  {print i,tA[i],a[tA[i]];}

  }’

  1 a 224

  2 c 34

  3 d 100

asortiはキー値をソート(文字列タイプ)し、生成された新しい配列をtAに挿入します。

二、パイプを通じてsortソートに送信する

コードは次のとおりです。

  [chengmo@localhost ~]$awk ‘BEGIN{

  a[100]=100;

  a[2]=224;

  a[3]=34;

  for(i in a)

  {print i,a[i] | “sort -r -n -k2”;}

  }’

  2 224

  100 100

  3 34

パイプを介して、外部プログラム「sort」に送信され、-rは大きいから小さいまで、-nは数字でソートされ、-k 2は2列目でソートされます。サードパーティのsortコマンドにデータを捨てることで、すべての問題が非常に簡単になります。key値でソートすると–k 2が-k 1になります。

コードは次のとおりです。

  [chengmo@localhost ~]$ awk ‘BEGIN{

  a[100]=100;

  a[2]=224;

  a[3]=34;

  for(i in a)

  {print i,a[i] | “sort -r -n -k1”;}

  }’

  100 100

  3 34

  2 224

三、カスタムソート関数

awkカスタム関数構造:

コードは次のとおりです。

  function funname(p1,p2,p3)

  {

  staction;

  return value;

}「/p」「p」以上はawkカスタム関数表現で、デフォルトの入力パラメータはすべて参照方式で入力され、return値は、文字型または数値型のみです。配列タイプを返すことはできません。配列タイプが返される場合。パラメータ方式で入力する必要があります。を選択します。「/p」「p」awkは配列タイプ「/p」「p」awk「function test(ary){for(i=0;i「10;i++){ary〔i)=i;}を返します。return i;}BEGIN{ n=test(array); for(i=0;i《n;i++){ print array[i]; }}’ 

ソート関数

コードは次のとおりです。

#arrが1次元配列に転送する「/p」「p」#keyソートタイプ1は、値ソート2に従ってキー値「/p」「p」「datatype比較タイプ1に従って数字ソート2に従って文字列ソート「/p」「p」「tarrソート」で返される配列「/p」「p」「splitseq分割文字列配列におけるキーと値の間の分割文字列「/p」「p」「return配列長「/p」「p」#実現構想は、元の配列a[‘a’]=100を並べ替えてa〔1〕=a区切り文字100にし、下付きで内容を再帰的に表示する。本ソートは泡立ち方式で行います。《/p》 《p》 《/p》 《p》function sortArr(arr,key,datatype,tarr,splitseq)

  { 《/p》 《p》 if(key ~ /[^1-2]/)

  {return tarr;}

  for(k in arr)

  {

  tarr[++alen]=(k“”splitseq“”arr[k]);

  } 《/p》 《p》 for(m=1;m《=alen;m++)

  {

  for(n=1;n《=alen-m-1;n++)

  {

  split(tarr[m],tm,splitseq);

  split(tarr[n+1],tn,splitseq); 《/p》 《p》 tnum=tarr[m];

  if(datatype==1)

  {

  if(tm[key]+0《tn[key]+0)

  {

  tarr[m]=tarr[n+1];

  tarr[n+1]=tnum;

  }

  }

  else

  {

  if((tm[key]“”) 《 (tn[key]“”))

  {

  tarr[m]=tarr[n+1];

  tarr[n+1]=tnum;

  }

  }

  }

  }

  return alen;

  }

完全なコードは次のとおりです。

コードは次のとおりです。

  [chengmo@centos5 ~]$ awk ‘BEGIN{

  a[“a”]=100;

  a[“b”]=110;

  a[“c”]=10;

  splitseq=“%%”;

  alen=sortArr(a,2,1,tarr,splitseq);

  for(m=1;m《=alen;m++)

  {

  split(tarr[m],ta,splitseq);

  print m,ta[1],ta[2];

  }

  }

  function sortArr(arr,key,datatype,tarr,splitseq)

  { 《/p》 《p》 if(key ~ /[^1-2]/)

  {return tarr;}

  for(k in arr)

  {

  tarr[++alen]=(k“”splitseq“”arr[k]);

  } 《/p》 《p》 for(m=1;m《=alen;m++)

  {

  for(n=1;n《=alen-m-1;n++)

  {

  split(tarr[m],tm,splitseq);

  split(tarr[n+1],tn,splitseq); 《/p》 《p》 tnum=tarr[m];

  if(datatype==1)

  {

  if(tm[key]+0《tn[key]+0)

  {

  tarr[m]=tarr[n+1];

  tarr[n+1]=tnum;

  }

  }

  else

  {

  if((tm[key]“”) 《 (tn[key]“”))

  {

  tarr[m]=tarr[n+1];

  tarr[n+1]=tnum;

  }

  }

  }

  }

  return alen;

  }

  ’ 《/p》 《p》1 b 110

  2 a 100

  3 c 10

以上,Linuxがawkを用いて配列ソートを行う方法を紹介したが,本稿では3つの方法を紹介し,それぞれの方法でawkの配列ソートを実現することができ,いずれかの方法で実現することができる.


ソース元URL:https://dopubox.com/article/p/4a0d83e733275809

Other Tools
  • Character Count TikTok Download DouYin Download BASE64 Base64 to Image Image to Base64 URL Encoding JavaScript Timestamp Unicode Converter JSON Format Modify Extension Make List CSS Optimizer MD5 Encryption Random Generator Image Compression QR Code Generator QR Code Reader Wallpaper Preview Image EXIF Blood Type Heredity Clothing Sizes app.tool_clock
  • 藤子・F・不二雄の名言「ありそうもない話をありそうに描きたい」【本と名言365】
    2024-05-29

    被害者「問題解決には程遠い」 旧ジャニーズ被害者らが会見
    2024-05-29

    ブームなぜ起きた? 東京国立近代美術館で「ハニワと土偶の近代」展
    2024-05-30

    白と黒で奏でるインスタレーション 渡辺信子が京都で「White and Black」
    2024-05-31

    古本屋を巡り、顧みられなくなった作品、作家を生き返らせた九大大学院教授没後20年 教え子や研究仲間を支える「清新な光景」
    2024-05-30

    作曲家ビゼーの窮地を救った傑作オペラ『真珠採り』の聴きどころは?【クラシック今日は何の日?】
    2024-05-31

    富士山麓のダイナミックな食材を味わう“奥・山梨”のガストロノミー〈Restaurant SAI 燊〉。
    2024-06-01

    千年後の未来へ 太宰府天満宮のふすま絵完成 日本画家神戸智行さん移住し10年かけ完成
    2024-06-04

    建築家・白井晟一設計の個人住宅「桂花の舎」が江之浦測候所に移築へ
    2024-06-04

    GROUP「島をつくる | Planning Another Island」(マイナビアートスクエア)開幕レポート。高層ビルのなかで建築をコンポストする
    2024-06-05

    アートフェア東京、次回は2025年3月に開催決定
    2024-06-04

    太宰府天満宮で「Fukuoka Art Book Fair」が開催へ
    2024-06-04

    お台場エリアを舞台に新芸術祭「東京お台場トリエンナーレ 2025」が誕生
    2024-06-05

    東京都写真美術館で「今森光彦 にっぽんの里山」が開催へ
    2024-06-04

    「犬派?猫派?」(山種美術館)開幕レポート。初公開から名作まで勢揃い
    2024-06-04

    田名網敬一「TANAAMI!! AKATSUKA!! / 45 rpm」展、集英社マンガアートヘリテージ トーキョーギャラリーで開催
    2024-06-04

    3日間限定発売! 名作パントンチェアが新たな魅力を纏った限定カラーで登場。
    2024-06-05

    書評:「日本美術史」を書き換える100年単位の挑戦。『この国(近代日本)の芸術──〈日本美術史〉を脱帝国主義化する』
    2024-06-05

    美術家藤井光さん個展「終戦の日/WAR IS OVER」 希望か絶望か…大分・佐伯の地下弾薬庫跡にこだまする泣き声
    2024-06-07

    向田邦子の名言「…これが私の料理のお稽古なのです。」【本と名言365】
    2024-06-07

    ©  Dopu Box
    💛