0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

シェルコマンドでKEY、VALUE形式のファイルから値を取得する方法

Last updated at Posted at 2023-09-30

シェル(Bash)でKEY、VALUE形式のファイルから値を取得する方法を紹介します。

1. コメント、空行を外すコマンド

cat <ファイル名> | grep -v '^\s*$' | grep -v '^\s*#'
または
grep -v -e '^\s*$' -e '^\s*#' <ファイル名>

  • grepの-vオプションは一致するものを除外
  • 正規表現の^は行の先頭
  • 正規表現の$は行の末尾
  • 正規表現のsは空白文字(半角スペース、\t、\n、\r、\f)
  • 正規表現の*は直前のパターンの0回以上の繰り替えし

実行例は以下の通りです。

test.conf
# comments
key01=value01
key02=value02
   #key02=value02
key03=value03
key04=value04

key05=value05
実行例(1)
[root@centos85 ~]# cat test.conf | grep -v '^\s*$' | grep -v '^\s*#'
key01=value01
key02=value02
key03=value03
key04=value04
key05=value05
[root@centos85 ~]#
実行例(2)
[root@centos85 ~]# grep -v -e '^\s*$' -e '^\s*#' test.conf
key01=value01
key02=value02
key03=value03
key04=value04
key05=value05
[root@centos85 ~]#

2. KEY値で検索

cat <ファイル名> | grep -v '^\s*$' | grep -v '^\s*#' | grep <検索するKEY値>
または
grep -v -e '^\s*$' -e '^\s*#' <ファイル名> | grep <検索するKEY値>

実行例(1)
[root@centos85 ~]# cat test.conf | grep -v '^\s*$' | grep -v '^\s*#' | grep key02
key02=value02
[root@centos85 ~]#
実行例(2)
[root@centos85 ~]# grep -v -e '^\s*$' -e '^\s*#' test.conf | grep key02
key02=value02
[root@centos85 ~]#

3. =で分割し2項目目を取得しVALUE値を取得

cat <ファイル名> | grep -v '^\s*$' | grep -v '^\s*#' | grep <検索するKEY値> | cut -d "=" -f 2
または
grep -v -e '^\s*$' -e '^\s*#' <ファイル名> | grep <検索するKEY値> | cut -d "=" -f 2

  • cutコマンドの-dオプションで=で分割
  • cutコマンドの-fオプションで2項目目を取得
実行例(1)
[root@centos85 ~]# cat test.conf | grep -v '^\s*$' | grep -v '^\s*#' | grep key02 | cut -d "=" -f 2
value02
[root@centos85 ~]#
実行例(2)
[root@centos85 ~]# grep -v -e '^\s*$' -e '^\s*#' test.conf | grep key02 | cut -d "=" -f 2
value02
[root@centos85 ~]#

KEY値を指定して、VALUE値を取得することができました。

4. その他

sedコマンドを使って置換して、KEY値からVALUE値を取得することもできます。

cat test.conf | grep -v '^\s*$' | grep -v '^\s*#' | grep "key02" | sed -r s:'key02='::

実行例
[root@centos85 ~]# cat test.conf | grep -v '^\s*$' | grep -v '^\s*#' | grep "key02" | sed -r s:'key02='::
value02
[root@centos85 ~]#

以上

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?