2018年7月17日火曜日

grepでの最短一致検索

2018 Jul. 21.
2018 Jul. 17.

grepに -P オプションを付ける
 最短一致可能なPearl正規表現が利用可能となる

検索文字列に ? を付ける
 ?に続く文字列の最短一致となる
 (最左最短一致なので検索文字列の先頭には注意が必要)
  qiita.com/anqooqie/items/191ad215e93237c77811

先頭からabまでの最短一致検索
$ echo adabfdabdfaabd | grep -P '^.*?ab'

-o オプションを付けると、行全体ではなく、マッチした文字列だけが1行1文字列で出力される。
$ echo adabfdabdfaabd | grep -Po '^.*?ab'

2018年7月8日日曜日

grepの検索文字列に$(ドル記号)を含める方法

2018 Jul. 08.

rcmdnk.com/blog/2013/10/28/computer-bash-linux/

bash上でのgrepで検索文字列に$(ドル記号)を含める方法

$を含む文字列の検索

ドル記号($)は変数の参照に使われるため、エスケープせずに単純にこれを書くと続く文字列の変数を 参照する様な形になって、大概の場合は未定義変数=空文字で 全ての行が該当してしまう。

ドル記号をエスケープしてダブルクォートするか、シングルクォートで囲むことで囲み内を展開しないようにする。
grep "\$abc"
grep '$abc'

$のみの検索

grep "\\$"
grep '\$'

シェルスクリプトの位置パラメータ/コマンドライン引数の一括展開

2018 Jul. 08.

fumiyas.github.io/2016/12/15/positional-parameters.sh-advent-calendar.html

"$*"
すべての値の間にスペース ` ` が差し込まれた1つの文字列に展開される。
展開の結果は元にように個別の値にはならず、スペースが差し込まれたひと塊の一つの値になる。
ダブルクォートに括られているため、展開後にワード分割はされない。
同様にパス名展開やブレース展開なども適用されない。

"$@"
位置パラメータの数だけ展開される。
パラメーターの数は変化しない。
ワード分割や各種展開もされない。

$* と $@ は同じ
位置パラメータの各値がそれぞれ個別に展開された後、個別にワード分割やパス名展開などが適用される。



2018年7月7日土曜日

文字列がマッチする数をカウントするシェルスクリプト

2018 Jul. 07.

server.etutsplus.com/shell-script-substr-count/

(1) 検索対象文字列から検索する文字列を見つけて改行文字「\n」を付けてマッチする数を行数にする
(2) "grep -c"で検索する文字列が何回現れるかカウントする

  echo $Line | sed "s/${Str}/${Str}\n/g" | grep -c "${Str}"

2018年6月24日日曜日

画像をアスペクトを保持して縮尺/拡大して、指定位置に表示する

2018 Jun. 24.

$ convert -resize WIDTHxHEIGHT INFILE.jpg jpeg:- | display -geometry +X+Y jpeg:-

 画像の横長x縦長を -resize で指定する。アスペクト比は保持される。
 パイプに渡す画像形式を TYPE:- で指定する。
  TYPE : jpg, jpeg, gif, png, bmp ...
 画像の表示位置の左上の座標を -geometry で指定する。

  $ convert -resize 300x200 INFILE.jpg jpeg:- | display -geometry +15+50 jpeg:-

2018年6月19日火曜日

「git fetch origin master」は

www-creators.com/archives/1097#git_fetch_origin_mater より
「git fetch origin master」は、リモートレポジトリ「origin」にあるブランチ「master」を、ローカルのリモート追跡ブランチに反映させる。という意味のコマンドです。

2018年6月17日日曜日

Gitの作業パターン

2018 Jun. 20.
2018 Jun. 19.
2018 Jun. 16.

A-1)リモートリポジトリ作成
A-2)リモートリポジトリのローカルへのclone

B-1)git fetch origin master 
B-2)git merge FETCH_HEAD

3)ローカルリポジトリでのファイル作成
4)ローカルリポジトリ内のファイルのadd
  サブディレクトリ作成時はその中にファイルが無ければcommitできない?
      $ git add -A
5)ローカルリポジトリのcommit
      $ git commit -a -m "MESSAGE"
6)ローカルリポジトリ内のリモートリポジトリへのpush
      $ git push origin master