🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

1回答

1262閲覧

Bashでの表形式データの処理方法について

ronin

総合スコア89

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

0グッド

0クリップ

投稿2021/02/08 22:21

シェルスクリプトで複数行列の中で、特定の条件を元にデータを取得するスクリプトの記述方法を教えてください。
具体的には下記の表の列Cと列Eの値を元に列Aの値を取得する方法です。

列A列B列C列D列E列F
1aaaok100red0:01
3bbbok99green0:01
5cccng83blue0:03
3dddng100white0:02

私としては、まず列Cの文字でgrepしてEで再度grepした後、列Aの文字部だけ切り取る方法でやろうかと思うのですが
もっといい方法があるのではないかと考えています。

何か良い方法がありましたらご教示の程、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/02/08 22:56 編集

awkかなんか使った方が早くない? というか、データ形式ってCSVとか?
t_obara

2021/02/09 01:21

grepの-eオプションで複数の条件を指定して、cutとかで取り出すという流れになると思いますが、わたしもawk以上のスクリプトを利用するのが良いかと思います。
Daregada

2021/02/09 01:23

元データの実際の内容を(表ではなく)テキストデータとして質問文に書く。```だけの行に囲まれるように書けば、空白などの欠落は起きない。 「シェルスクリプトで」使えるツールに制限があるならそれを質問文に書く。たとえば、実行するサーバーにはXXXが存在しない、など。grepは使えるようだが、awkはどうなのか。
ronin

2021/02/14 07:45

返信が遅くなり申し訳ありません。ご回答頂きありがとうございました。 awkを使ったことがなく、その発想がありませんでした。awkを使用して解決したいと思います。
guest

回答1

0

ベストアンサー

列Cと列Eの値を元に列Aの値を取得する方法

そのデータがinput.txtという名前のスペース区切りのテキストファイルとして用意されているとして、たとえば列Cがngで列Eが90以下であるような行の列Aを出力するとすると、

awk '$3=="ng" && $5<=90{print $1}' input.txt

あとは入門書を探してみてください。

投稿2021/02/10 13:04

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ronin

2021/02/14 07:47

ご回答ありがとうございます。あまりに基本的な事にも関わらず丁寧にご回答頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問