LoginSignup
3
2

More than 5 years have passed since last update.

任意の文字列や行をハイライトするツールをGo言語で作成してみた

Last updated at Posted at 2018-08-20

前回書いた「任意の文字列を含む行を色付けして出力するシェルコマンド」を簡単に扱えるように、Go言語の練習も兼ねて、任意の文字列やそれを含む行をハイライトするコマンドラインツールをGo言語で作成してみた。

demo

作成したコマンドは https://github.com/x-color/hlt にMITライセンスで置いてくので、ご自由にお使いください。インストール方法などは、リンク先に書いてあります。

実装されている機能

今の所、実装されている機能は

  • 任意の文字列のハイライト
  • 任意の文字列を含む行のハイライト
  • ハイライトする色の指定
  • ハイライトする場所(文字、背景)の指定
  • ハイライト時の書体の指定(太字、斜体など)
  • 任意の文字列を含む行と前後の行のハイライト

使い方

ここに書いているのは簡単な使い方なので、詳しい使い方が知りたい場合は  https://github.com/x-color/hlt のREADMEに書いてあるので、そちらを参照してください。

任意の文字列のハイライト

file.txt内からtextという文字列をハイライトして出力する

# 直接'file.txt'を指定する
$ hlt word text file.txt

# 標準入力から'file.txt'を入力する
$ cat file.txt | hlt word text

ハイライトする色の変更

# 文字をハイライトする色を変更する。この例は赤色を指定
$ cat file.txt | hlt word -c red text

# 文字の背景をハイライトする色を変更する。この例は赤色を指定
$ cat file.txt | hlt word -b red text

任意の文字列を含む行のハイライト

file.txt内からtextという文字列を含む行をハイライトして出力する

# 直接'file.txt'を指定する
$ hlt line text file.txt

# 標準入力から'file.txt'を入力する
$ cat file.txt | hlt line text

ハイライトする色の変更

# 文字をハイライトする色を変更する。この例は青色を指定
$ cat file.txt | hlt line -c blue text

# 文字の背景をハイライトする色を変更する。この例は青色を指定
$ cat file.txt | hlt line -b blue text

ハイライト時の書体の指定

demo02

# 太字にする
$ cat file.txt | hlt word -B text
# 斜体にする
$ cat file.txt | hlt word -I text
# 取り消し線を引く
$ cat file.txt | hlt word -S text
# 下線を引く
$ cat file.txt | hlt word -U text

指定された行のハイライト

demo03

file2.txt内の3〜6行目をハイライトして出力する

# 直接'file.txt'を指定する
$ hlt linen 3~6 file.txt

# 標準入力から'file.txt'を入力する
$ cat file.txt | hlt linen 3~6

file2.txt内の3,6行目と10行目以降をハイライトして出力する

# 複数条件はカンマで区切って記述
$ cat file.txt | hlt linen 3,6,10~

file2.txt内の偶奇数行目をハイライトして出力する

# 偶数行目を指定 (even)
$ cat file.txt | hlt linen even
# 奇数行目を指定 (odd)
$ cat file.txt | hlt linen odd

おわりに

今後も少しづつ機能を追加していく予定。今の所、以下の機能を考えている。

  • 色の指定を数字以外にred,blueなどの文字列で指定する機能 実装完了
  • 書体の変更機能 実装完了
  • 指定文字列を含む行の前後をまとめてハイライトする機能 実装完了
  • 指定行をハイライトする機能 実装完了
  • 同時に複数箇所を様々な色でハイライトする機能
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2