bashで変数を置換して変数に代入する方法を紹介します。 ネットで上記の方法を調べたのですが、bashの変数を正規表現の入力にしたりとか、置換結果を変数に代入する記事があまりみつからなかったので、このエントリーでまとめておきます。 ビギナーの方向けの内容です。文字列置換ではsedを前提とします。 1.問題点 例えば、 00012345 というテキストを含むファイル「foo.txt」から「12345」を抜き出したい場合、コマンドラインで次のように実行します。 #!/bin/sh sed -e "s/[0]*\(12345\)/\1/" foo.txt 上記の内容を「foo.sh」というファイルに保存して実行すると、標準出力に「12345」を出力します。 % ./foo.sh 12345 ですが、以下のことが分かりません。 テキストファイルではなく、bashの変数を入力にしたい 置換後の内容を

覚えていると、たまに便利かもしれない"bash"のコマンド履歴の展開に関する技を、例を交えながらまとめてみました。 最後にも書きましたが、他にもたくさんありますので、色々試してみてください。 直前に実行したコマンドを実行 "!!"コマンドで、1つ前に実行したコマンドを再度実行できます。 $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test $ !! ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test n個前に実行したコマンドを実行 "!-n"コマンドで、n個前に実行したコマンドを再度実行できます。 例えば、以下の例では、"!-2"とすると、2個前に実行したコマンドを実行しています。 $ ls test $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7

find -exec の中でパイプを使って複数コマンドを実行する方法について説明します。 パイプを使った実行例 ここでは、カレントディレクトリ以下にあるファイルの中身を全て小文字にするコマンドを書くことを例に説明していきます。 一つのファイルだけであれば、次のコマンドでできます。 cat input.txt | tr 'A-Z' 'a-z' > input.txt.lower これをそのまま、find -exec で実行しようとしても上手く動きません。 # 動かない例 find . -type f -name '*.txt' -exec cat {} | tr 'A-Z' 'a-z' > {}.lower \; 原因は -exec の後ろには1つのコマンドしか取れないからです。 find でパイプを使う方法 代わりに、sh -c "実行したいコマンド" と書くことで複数のコマンドを一つのコ

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く