Linux/UNIXで文字列から特定部分(右から・左から何個、〇〇~〇〇まで)を抜き出すコマンド
Pocket

ちょっとしたスクリプトを作っていた際、文字列の抜き出しを多様する処理があったので忘れないように残しておく。

●左から◯文字

cut -c [開始文字(個数)]-[終了文字(個数)]
[root@test-node ~]# # 例:左から1文字目~4文字目
[root@test-node ~]# echo abcdefghijk | cut -c 1-4
abcd
[root@test-node ~]#
[root@test-node ~]# # 例:左から2文字目~5文字目
[root@test-node ~]# echo abcdefghijk | cut -c 2-5
bcde

 

●左から◯文字を除外する

cut -c [開始文字(個数)+1]-
[root@test-node ~]# # 例:左から3文字を除外
[root@test-node ~]# echo abcdefghijk | cut -c 4-
defghijk
Sponsored Links

●右から◯文字

rev | cut -c [開始文字(個数)]-[終了文字(個数)] | rev
[root@test-node ~]# # 例:右から1文字目~5文字目
[root@test-node ~]# echo abcdefghijk | rev | cut -c 1-5 | rev
ghijk
[root@test-node ~]# echo abcdefghijk | rev | cut -c 3-6 | rev
fghi

 

●右から◯文字を除外する

rev | cut -c [開始文字(個数)+1]- | rev
[root@test-node ~]# # 例:右から4文字を除外
[root@test-node ~]# echo abcdefghijk | rev | cut -c 5- | rev
abcdefg

 

●文字A~文字Bまでを抽出する

awk '{print substr($0, index($0, "b"), index($0, "e") -1 )}'
[root@test-node ~]# # bからgまでを抽出
[root@test-node ~]# echo abcdefghijk | awk '{print substr($0, index($0, "b"), index($0, "g") -1 )}'
bcdefg
[root@test-node ~]# # bからeまでを抽出(1回のみ)
[root@test-node ~]# echo abcdefabcdef | awk '{print substr($0, index($0, "b"), index($0, "e") -1 )}'
bcde

 

●文字A~文字Bまでを除外する

awk '{sub("文字A.*.文字B", "");print $0;}'
[root@test-node ~]# # 「_」から「_」までを除外して表示する
[root@test-node ~]# echo aaa_bbbb_cccc | awk '{sub("_.*._", "");print $0;}'
aaacccc

 

●指定した文字以降を抽出する

awk '{print substr($0, index($0, "文字"))}'
[root@test-node ~]# # b以降を出力させる
[root@test-node ~]# echo aaa_bbbb_cccc | awk '{print substr($0, index($0, "b"))}'
bbbb_cccc

 

●指定した文字以降を除外する

awk '{sub("文字A.*", "");print $0;}'
[root@test-node ~]# # b以降を除外する
[root@test-node ~]# echo aaa_bbbb_cccc | awk '{sub("b.*", "");print $0;}'
aaa_

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: Linux/UNIXで文字列から特定部分(右から・左から何個、〇〇~〇〇まで)を抜き出すコマンド | 俺的備忘録 〜なんかいろいろ〜 – Temporary index

Leave a Comment

メールアドレスが公開されることはありません。