教師としての仕事で、OneDrive に定期的にバックアップしたいファイルが山ほどあります。同僚はファイルに名前を付けるのが苦手なので、OneDrive にファイルを保存できるようにクリーンアップする必要があります。
理解できないのは、ピリオドの前のスペースを選択する方法です。
これを試しています
bash-3.2$ echo "foo bar .pdf" | tr -s " \." '\.'
そしてこれを手に入れる
foo.bar.pdf
の代わりにfoo bar.pdf
。私のコマンドの何が間違っているのでしょうか?
答え1
tr
置き換えるシングル文字を単一の文字に置き換え、各スペースと各ドットをドットに置き換えるように指示しました (ただし、-s
スペースとドットを 1 つのエンティティに圧縮して置き換えます)。つまり、1 つのスペースまたはドットで . をトリガーするのに十分ですtr
。
文字列を置換するには以下を使用しますsed
:
echo "foo bar .pdf" | sed 's/ \././g'
注:グローバルに act を使用したg
ためtr
、これが一般的に必要なものであると判断しました (この特定の文字列では関係ありませんfoo bar .pdf
)。