Linuxで文字列の特定部分を抜き出す方法

July 23,2019 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

Linuxで文字列の特定部分を抜き出す方法を紹介します。

1.問題点

下記のように、lsコマンドでファイルの一覧を取得します。

# ls -l
合計 3
-rw-r--r--. 1 root root   0  6月 28 10:31 2019 aaa
-rw-r--r--. 1 root root   0  6月 28 10:31 2019 bbb
-rw-r--r--. 1 root root   0  6月 28 10:31 2019 ccc

この出力から「6月」から「10」までの文字列

6月 28 10

を取得したいのですが、方法が分かりません。

ということで、Linuxで文字列の特定部分を抜き出す方法を紹介します。

2.文字列の特定部分を抜き出す

文字列の特定部分を抜き出すには、cutコマンドを利用します。

# ls -l | cut -c 30-37
 
6月 28 10
6月 28 10
6月 28 10

"-c"は、示した位置の文字だけを表示するオプションです。

上記の例では30文字から37文字を表示します。

Comments [0] | Trackbacks [0]

bashの配列をjoinする方法

July 19,2019 12:03 AM
Category:[bash]
Tag:[bash]
Permalink

bashの配列をjoinする方法を紹介します。

1.問題点

bashで次のようなリストを作成しました。

#!/bin/bash
 
declare -a list=("a" "b" "c")

この配列変数listの各データをカンマで結合させて1つのデータにしたいのですが、方法がわかりません。

ということで、bashの配列をjoinする方法を紹介します。

2.bashの配列をjoinする

bashの配列をjoinするには、IFSを利用します。

#!/bin/bash
 
declare -a list=("a" "b" "c")
result="$(IFS=","; echo "${list[*]}")"
echo ${result}

実行結果

a,b,c

IFSは区切り文字の環境変数です。bashの場合、空白文字が区切り文字として初期設定されています。

これを強制的に書き替えたあと、配列を

${配列名[*]}

の形式で出力すると、書き替えたIFSを区切り文字と利用します。

ここではサンプルを簡単にするために区切り文字を書き替えたままにしていますが、処理のあとで空白文字を区切り文字として利用する場合は元に戻しましょう。

#!/bin/bash
 
declare -a list=("a" "b" "c")
backup=$IFS
result="$(IFS=","; echo "${list[*]}")"
IFS=$backup
echo ${result}
Comments [0] | Trackbacks [0]

コマンドの実行結果をdiffする方法

July 8,2019 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

コマンドの実行結果をdiffする方法を紹介します。

1.問題点

次のlsコマンドの実行結果を2つ取得し、取得結果の差分をdiffで取得したいのです。

$ ls -1 /home/foo/test1
$ ls -1 /home/foo/test2

次のように実行結果をファイルに出力すれば簡単にdiffできるのですが、できればファイル出力なしで実施したいです。

$ ls -1 /home/foo/test1 > /home/foo/result1
$ ls -1 /home/foo/test2 > /home/foo/result2
$ diff /home/foo/result1 /home/foo/result2

ということで、コマンドの実行結果をdiffする方法を紹介します。

2.コマンドの実行結果をdiffする

コマンドの実行結果をdiffするには、リダイレクションを使って、コマンドの実行結果をdiffの入力にします。

$ diff <(ls -1 /home/foo/test1) <(ls -1 /home/foo/test2)
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages