Linuxコマンドを勉強~expand、fmt、pr、sort、uniq、split、join~

expand

expandコマンドは、ファイルのタブをスペースに換えます。

単語間にタブが1個ずつ入ったファイルを用意します。
そのファイルにexpandコマンドを実行してみます。

・・・お分かりいただけたでしょうか。
タブを空白にするというよりかは、ある単語の後ろのタブに対して、次の単語との間が8文字の倍数で揃うように空白を入れている、という感じです。

コマンドリファレンス系のページを見ていると、expandはただの文字変換ではなく、
「インデントを整形する」コマンドとして説明されてたりします。
デフォルトでは空白8文字に揃えます。

expandコマンドのオプションに、-tオプションがあります。これは、揃える空白の文字数を指定します。
先ほどのファイルを空白4文字揃えにします。

「-t数字」とすると、最大をその文字数として空白を入れます。

unexpandコマンドは逆にスペースをタブに変換します。

fmt

fmtコマンドは、テキストファイルの整形を行います。

例えば、「-w 数字」とすると、1行の文字数を固定し、その文字数を超える場合は改行します。

以下は、fmtコマンドの説明の最初の1文をコピーしたファイルです。

Reformat each paragraph in the FILE(s), writing to standard output.
The option -WIDTH is an abbreviated form of –width=DIGITS.

これを1行40文字で表示します。

1行が40文字以内に収まりました。
-wオプションは、次の単語が指定した文字数を超える場合はその手前で改行します。

pr

prは印刷のためのファイル整形を行い、その内容を画面に出力します。

sort

sortコマンドはファイルの内容をソートして表示します。

上記のように、行の先頭からの並びでソートします。

また、-kオプションを使用すると、何番目のフィールドでソートするという指定もできます。
次のようなファイルがあったとして(文字の間はタブ)、2番目のフィールドでソートします。

-tオプションで区切り文字を指定できます。
また、-rオプションでソート順が逆になります。

uniq

uniqは、ソート済みのファイルから重複した行を削除します。

2行目と4行目が重複している以下のようなファイルがあったとします。

この状態のままuniqコマンドを実行しても重複行は削除されません。

ソートされていることが条件なので、sortコマンドとuniqコマンドをパイプでつなげて実行します。

split

splitコマンドは、ファイルを複数のファイルに分割します。

何行ごとかにファイルを分割したい場合、-lオプションを使用します。

「xaa」「xab」というファイルが新しくできています。

splitコマンドで分割したファイルは「aa」「ab」・・・とファイル名の後ろに接尾辞を付けます。
何も指定しないと、接頭辞はデフォルトで「x」です。

接頭辞を変更するときは、ファイル名の後ろに指定したい名前を付けます。

こういう風にもできます。

「–additional-suffix .csv」で拡張子を付けています。
「-d」オプションは、接尾辞を0から始まる数字にします。
「-a 1」は、接尾辞が数字のとき、何桁で表示するかの指定です。(デフォルトは2桁0埋め表示です)

join

joinコマンドは2つのファイルのフィールドうち、共通するフィールドがあった行を連結して表示します。

次のような2つのファイルがあったとします。
[user.csv]
1 taka
2 taka1
3 taka2

[role.csv]
2 admin
3 normal

この2ファイルを、最初のフィールドで結合します。

このように、最初のフィールドが一致する2と3の行だけ連結されました。

次は正規表現、およびsed、grepを勉強します。

広告
  • LINEで送る