Perlで範囲を抜き出す。特定範囲のみ加工する。
日本語ドキュメントの取り扱いが主ですが、用語と用語、行番号と用語などで範囲を想定し、Perlに備わっている機能を使ってテキストファイルから行を抜き出すのに、こんな風に使っています。sオプションでシェル変数を受け取ります。関数やスクリプトにする場合に覚えておくと便利です。この関数は、Zsh/Bash共通でいけると思います。
新規にターミナル(端末)。CTRL+ALT+T
使い方
perlrange 範囲始まりに含まれる行の単語 同じく終わりの行の単語
.bashrc などにぺったんする。
function perlrange () {
# s オプションでシェル変数受け取れる。qw注意。
# if [ $# -ge 1 ]; then
if [ $# -eq 2 ]; then
perl -nse "print if /$1/ .. /$2/"
else
echo 説明....
echo 範囲A-Bを入力。Bが存在しなければ最後まで。
fi
}
余談
perlrange 範囲始まりに含まれる行の単語 同じく終わりの行の単語
.bashrc などにぺったんする。
function perlrange () {
# s オプションでシェル変数受け取れる。qw注意。
# if [ $# -ge 1 ]; then
if [ $# -eq 2 ]; then
perl -nse "print if /$1/ .. /$2/"
else
echo 説明....
echo 範囲A-Bを入力。Bが存在しなければ最後まで。
fi
}
余談
perl -ne 'print if 10 .. 12'
10行目から12行めから抜き出す。正規表現にしなければ$_行番号になります。
perl -ne 'print if 10 .. /マンゴージュース/'
10行目からマンゴージュースまで抜き出す。正規表現と行番号も組み合わせできます。
cd ~
ls | sort -r | perlrange Pic Desktop
なんて2行タイプするとイメージがつかめていいかもしれません。
0 件のコメント:
コメントを投稿