Bashで変数を大文字または小文字に変換する方法

May 13,2019 11:55 PM
Category:[bash]
Tag:[bash]
Permalink

Bashで変数を大文字または小文字に変換する方法を紹介します。

1.問題点

bashで次のサンプルを作りました。

#!/bin/bash
 
foo=ABC

変数fooの値をすべて小文字にしたいのですが、方法がわかりません。

ということで、Bashで変数を大文字または小文字に変換する方法を紹介します。

2.変数を大文字または小文字に変換する

たとえば、大文字の変数をすべて小文字に変換するには次のように、変数の後ろにカンマを2つ記述します。

#!/bin/bash
 
foo=ABC
echo ${foo,,}

実行結果

abc

変換のパターンは次の6種類があります。

パターンフォーマットサンプル結果
1文字目を大文字${foo^}foo=abc; echo ${foo^}Abc
すべてを大文字${foo^^}foo=abc; echo ${foo^^}ABC
1文字目を小文字${foo,}foo=ABC; echo ${foo,}aBC
すべてを小文字${foo,,}foo=ABC; echo ${foo,,}abc
1文字目を反転${foo~}foo=ABC; echo ${foo~}aBC
すべてを反転${foo~~}foo=aBc; echo ${foo~~}AbC

注意点は、変換する記号「^」「,」「~」はカッコで括ることです。

Comments [0] | Trackbacks [0]

bashの変数をsplitして配列を作る方法

May 9,2019 11:55 PM
Category:[bash]
Tag:[bash]
Permalink

bashの変数をsplitして配列を作る方法を紹介します。

1.問題点

bashで次のような変数を作成しました。

#!/bin/bash
 
foo=a,b,c,d,f,e,g

この変数fooを","でsplit(分割)して配列変数に代入したいのですが、方法がわかりません。

ということで、bashの変数をsplitして配列を作る方法を紹介します。

2.bashの変数をsplitして配列を作る

bashの変数をsplitして配列を作るには、文字列置換を利用します。

#!/bin/bash
 
foo=a,b,c,d,f,e,g
list=(${foo//,/ })
echo ${list[@]}
echo ${list[1]}

実行結果

a b c d e f g
b

3.文字列置換について

今回利用したbashの文字列置換のフォーマットは、

${変数名/置換前文字列/置換後文字列}

が基本です。

これで、変数の中にマッチする文字があれば1回のみ置換します。

#!/bin/bash
 
foo=a,b,c,d,f,e,g
list=(${foo/,/ })
echo ${list[@]}
echo ${list[1]}

実行結果

a b,c,d,e,f,g
b,c,d,e,f,g

マッチする文字をすべて置換したい場合は、2項のサンプルのようにスラッシュを2つにして、

${変数名//置換前文字列/置換後文字列}

とします。

"//"はsedの"/g"オプションと同じ意味になります。

Comments [0] | Trackbacks [0]

PythonでEUC-JPのファイルを読み込んで正規表現を使う方法

April 30,2019 11:55 PM
Category:[Python]
Tag:[Python]
Permalink

PythonでEUC-JPのファイルを読み込んで正規表現を使う方法を紹介します。

Pythonは2.x系です。

1.問題点

下記の、文字コードがEUC-JPのファイルがあります。

text.txt

テスト1
テスト2
テスト3

このファイルから「テスト2」の部分だけをマッチさせたいので、下記のスクリプトを作ったのですがマッチしません。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
 
import sys
import codecs
import re
 
path = './test.txt'
f = codecs.open(path, 'r', 'euc_jp')
for line in f:
    result = re.search('テスト2', line)
    if result:
        print line

ということで、PythonでEUC-JPのファイルを読み込んで正規表現を使う方法を紹介します。

2.EUC-JPのファイルを読み込んで正規表現を使う

EUC-JPのファイルを読み込んで正規表現を使うには、search()の第1パラメータにuフラグを与えます。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
 
import sys
import codecs
import re
 
path = './test.txt'
f = codecs.open(path, 'r', 'euc_jp')
for line in f:
    result = re.search(u'テスト2', line)
    if result:
        print line

これでEUC-JPのファイルで正規表現が使えるようになります。

Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages