業界未経験者のLPIC LEVEL1 ~フィルタコマンドの巻①~

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

皆様こんにちは。初めての方ははじめまして。
中途入社おじさんこと関口です。
最近急に気温が上がりましたね。
電車の乗り降りが多い私には、車内外の温度差が激しい現状はいささか辛いものがあります。
皆様もこの辛い気温に負けないよう、体調管理にはお気をつけ下さい。

<前振り>

さて、本文は著者が資格の取得の際に苦労した部分を紹介しております。
その他もろもろ私の記事の前提情報は
「関口」
とブログ内検索をして前の記事を呼んでいただければ幸いです。

<本題>

今回はフィルタコマンドについて一部ご紹介します。
フィルタコマンドとは端的にいうと、テキストを加工するコマンドのことです。
これらを使いこなすと、サーバ内のデータを綺麗にまとめたりできます。
エンジニアの立場で言えば、お客様に見せるデータを見やすい状態にしたり出来るわけです。
数が多いので複数回に分けてご紹介します。
今回は、LPIC101で出てくる中からcut、jion、pasteをご紹介しましょう。

cut

ファイルの各行から指定した文字の位置(何文字目)や
フィールド(下記の例を参照)を取り出すことが出来ます。
例えばとあるテキストファイル「a.txt」の中身が
-例①-「a.txt」
01 23
45 67
89 1
だったとします。
文字位置を2文字目に指定して取り出すと、各行の2文字目だけが出力され
1
5
9
と表示されるわけです。(何文字目から何文字目といった指定もできます。1~3文字目とか)
他にも2番目のフィールドを指定した場合だと、
23
67
10
になります。(2番目のフィールド =スペースで区切られた2番目の文字列が取り出されてます。)

join

2つのファイルから、共通のフィールドを持っている行を連結します。
例えばcutの例に挙げた例①「a.txt」ともう一つ下記の内容の「b.txt」 があるとしましょう。
-例②-「b.txt」
01 abc
45 def
89 ghi
この二つのファイルの1番目のフィールドを指定して、joinを打つと
01 23 abc
45 67 def
89 10 ghi
といった具合にファイルの中身を連結することが出来ます。

paste

今回はこれが最後になります。
joinと少し似てますが、複数のファイルを読み込んで、それぞれの同じ行を連結するコマンドです。
例①「a.txt」と例②「b.txt」、と下記の例③「c.txt」を連結するとします。
-例③-「c.txt」
ABC DEF
GHI JKL
MNO PQR
すると、同じ行同士が横に連結し、以下のようになります。
01 23 01 abc ABC DEF
45 67 45 def GHI JKL
89 10 89 ghi MNO PQR
※「a.txt」「b.txt」「c.txt」の内容が順番に繋がっている。
ちなみに、今回紹介したコマンドは全て区切り文字(デリミタ)を指定することが可能です。
例えば「;」を区切り文字に指定してあげると、上述の結果が、
01 23; 01 abc; ABC DEF
45 67; 45 def; GHI JKL
89 10; 89 ghi;MNO PQR
になります。(※連結する際に区切りが出来ています)
さて、フィルタコマンドのご紹介はいかがでしたでしょうか。
後日またご紹介しますが、これらのコマンドと一緒に
sortやuniq等といったコマンドをあわせることで
重複する部分を1つにまとめたり並び替えたりして、
より見やすいファイルの内容にすることが出来るわけです。
その辺りは次回お話いたします。
次回もこの駄文をお読みいただければ幸いです。
今回はここまでです。
本文を最後までお読みいただき、ありがとうございました。

投稿者プロフィール

sekiguchi
2016年2月入社の中途未経験おじさんです。
NY出張の際、スマートデバイスに目覚めたIT雑兵でもあります。
一通りのデバイスを購入した後に技適マークが無いことに気がついたと言う
悲劇のエピソードはいずれ語られるとか無いとか・・・

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

2016年2月入社の中途未経験おじさんです。 NY出張の際、スマートデバイスに目覚めたIT雑兵でもあります。 一通りのデバイスを購入した後に技適マークが無いことに気がついたと言う 悲劇のエピソードはいずれ語られるとか無いとか・・・