sedやgrepなどを使って、ダブルクォーテーションやシングルクォーテーションに囲まれた文字列を抽出する方法についてを記述する。
基本的にはsedでいいと思うけど、念のため他のやり方についても書いておく。

1.sed

sedでダブルクォーテーションやシングルクォーテーションに囲まれた文字列を抽出する場合は、以下のようにする。

sed 's/^.*"\(.*\)".*$/\1/' # ダブルクォーテーションの場合
sed "s/^.*'\(.*\)'.*$/\1/" # シングルクォーテーションの場合
blacknon@BS-PUB-UBUNTU-01:~$ echo 'aaa...

2018/04/26 一部コマンドを修正+追記

xargsとブレース展開を使うことで、うまいこと逆順に出力させることも可能だ。

コマンド | xargs -L1 bash -c 'eval eval echo \\\${$#..0}'
blacknon@BS-PUB-UBUNTU-01:~$ echo {a..e}{01..05} | xargs -n5
a01 a02 a03 a04 a05
b01 b02 b03 b04 b05
c01 c02 c03 c04 c05
d01 d02 d03 d04 d05
e01 e02 e03 e04 e05
blacknon@BS-PUB...

Linuxコンソール上で文字列の回文判定を行う

ふと、コンソール上でワンライナーで文字列の回文判定を行うにはどうすればよいのだろう?と思ったので調べてみた。
以下のようにすることで、回文判定を行うことができる。

perlの場合、アルファベットならもっと短くできるのだけど、日本語も対応させるとちょっと長くなってしまった。

echo "あいうえお" | awk '{ split($1,a,""); for(i=1;i<=length($1)/2;i++) if (a[length($1)-i+1]==a[i]) f=0; else {f=1}; print f}' # 返り値が0なら回文、1なら回文ではない
echo "あいうえお"...

小文字⇔大文字の変換方法については、以前にsedでの処理方法について記述したことがあったが、処理の仕方としてはsedだけではなく、Bashの構文を使ったりtrやawkを使ったりといろいろなアプローチの仕方がある。
今回は、それらについてを紹介する。

1.Bash 4.0以降での方法

Bash 4.0以降では、構文として変数を呼び出す際に小文字⇔大文字の変換をさせることができる。

大文字化

${変数^} # 最初の一文字目のみ大文字化
${変数^^} # すべて大文字化
[root@BS-PUB-CENT7-01 test1]# v=test;echo ${v^}
Te...

Linuxコンソール上で、同じ文字列を繰り返し出力させるにはどうすればよいだろう?という疑問が出てきたので、少し調べてみた。
perlやpythonを呼び出すの含め、以下のような方法があるようだ。

bashのprintfやseq

printfをうまく使ったり、seqやprintfをtrとうまく組み合わせるといいだろう。
(○のとこに繰り返させる数字を入れる)

printf %○s | tr ' ' '文字列'
printf "%0.s文字列" {1..○}
seq -s文字列 ○|tr -d '[:digit:]'
seq  -f "文字列" -s '' ○ # ←Macのみ
...

Linuxコンソール上で、Excelのように行と列を入れ替えたい時がある。
そんなときは、以下のようにawkなどを使うことで実現可能だ。

1.awkを使う

まずはawkを使う場合。
以下のようにすることで、行と列の入れ替えが可能だ。

awk '
{ for (i=1; i<=NF; i++)  { a[NR,i] = $i } } NF>p { p = NF }
END {
    for(j=1; j<=p; j++) { str=a[1,j]; for(i=2; i<=NR; i++){ str=str" "a[i,j]; }
        print str
    }...