ここで初心者です。フォルダ内のすべてのファイルに対して、次の順序を置き換えるbashスクリプトを作成しようとしています。
[tr][tr]{X}
ここで、Xは小数(数値セットと「.」)、ここで「コレクション」です
[tr][tr]{\tinyX}
。
どんなアイデアがありますか?
ありがとう
答え1
GNUにアクセスできない場合は、sed
次のものを使用することもできますperl
(実際には-i
GNUから借りたsed
)。
find . -type f -exec perl -Tpi -e 's/\Q[tr][tr]{\E\K[\d.]+\}/\\tiny$&/g' {} +
答え2
GNUはsed
グローバル代替モードを使用しますs/regexp/replacement/g
。
sed -i'' 's/\(\[tr\]\[tr\]{\)\([0-9.]\+}\)/\1\\tiny\2/g' /path/to/folder/*
これは1セットの文字列をキャプチャ[tr][tr]{
し、X
1つ以上の数字または(角かっこ内の文字と1回以上一致する角括弧式)を含み、.
2番目のセットで終わり、一致する部分を最初のセットに置き換えます。 2番目のグループライン。グループ括弧、リテラル角括弧、およびリテラルバックスラッシュは、他のバックスラッシュを使用してエスケープする必要があります。[0-9.]\+
\+
}
\tiny
()
[]
+
\
このプログラムを実行する前に、必ずデータフォルダをバックアップしてください(または元のファイルを保存する-i.back
代わりに使用してください)。-i''
filename.back