• 線上工具
  • - 計算器
    • 字元計數
  • - 下載
    • TikTok 下載
    • 抖音下載
  • - 網路工具
    • BASE64
    • Base64 轉圖片
    • 圖片轉 Base64
    • URL 編碼
    • JavaScript
    • 時間戳
    • Unicode 轉換器
    • JSON 格式化
    • 修改副檔名
    • 製作列表
    • CSS 優化器
  • - 加密工具
    • MD5 加密
    • 隨機生成器
  • - 圖像工具
    • 圖像壓縮
    • QR 碼生成器
    • QR 碼識別器
    • 壁紙預覽
    • 圖片 EXIF
  • - 資訊表
    • 血型遺傳
    • 服裝尺寸
    • 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

其他工具
  • 字元計數 TikTok 下載 抖音下載 BASE64 Base64 轉圖片 圖片轉 Base64 URL 編碼 JavaScript 時間戳 Unicode 轉換器 JSON 格式化 修改副檔名 製作列表 CSS 優化器 MD5 加密 隨機生成器 圖像壓縮 QR 碼生成器 QR 碼識別器 壁紙預覽 圖片 EXIF 血型遺傳 服裝尺寸 app.tool_clock
  • ジョン・レノンのギター4億5千万円で落札
    2024-05-30

    美術館の裏側を伝える展覧会「鎌倉別館40周年記念 てあて・まもり・のこす 神奈川県立近代美術館の保存修復」レポート
    2024-05-29

    歯科医師の技術で愛好家も納得するサウナを細部まで再現するミニチュア作家
    2024-05-30

    “ひばり”の愛称にふさわしい美しいメロディ。ハイドンの『弦楽四重奏曲第67番』【クラシック今日は何の日?】
    2024-05-30

    かど番・藤井聡太、第4局始まる 将棋、叡王戦
    2024-05-30

    原作者の意向は取り入れられたと日テレ
    2024-05-30

    韓国HYBE傘下の代表続投 和解望む意向
    2024-05-31

    鎌倉幕府の地頭から海の武士団・松浦党に…古文書群「青方文書」からみる中世の漁業や製塩事情
    2024-06-01

    現代詩の「中原中也賞」、俳句で培われた言語感覚…「新たな音やリズム」ジャンルを往来し追求
    2024-06-02

    杉真理×和田唱がビートルズをとことん語る!NHK-FMの人気番組「ディスカバー・ビートルズ」がオンライン講座として復活!
    2024-06-02

    吉田南さん、バイオリン部門6位 エリザベート音楽コン、奈良出身
    2024-06-01

    本年入試私立公立とも志願者微減 栄光ゼミナール担当者にきく 埼玉中高入試最新動向
    2024-06-04

    特別展 「工芸的美しさの行方―うつわ・包み・装飾」が東京と京都で開催。日本の美術工芸を世界へ 
    2024-06-04

    「TRIO パリ・東京・大阪 モダンアート・コレクション」(東京国立近代美術館)開幕レポート。トリオで再発見する3館のコレクション
    2024-06-05

    エドガー・サラン個展「EDGAR SARIN ー HUNKY DORY」(VAGUE KOBE)レポート。展示空間の可能性やその調和の在り方を問いかける
    2024-06-04

    「VOCA展」に関するハラスメント防止のためのガイドラインが制定
    2024-06-05

    週末見たい展覧会5選。今週はTRIO展、吉田克朗展、建築の構造デザインに焦点を当てた展覧会など。【2024年6月第2週】
    2024-06-05

    藤井、棋聖戦5連覇へ白星発進
    2024-06-06

    なぜ、いま「先住民の現代アート」なのか? 『美術手帖』2024年7月号は、「先住民の現代アート」特集
    2024-06-06

    ブリン・バン・バン・ボンが1位 ビルボード、上半期人気曲
    2024-06-06

    ©  Dopu Box
    💛