私はファイル名を変更する必要のあるファイルのリストを生成するbashコマンドを持っています。 ので、私はこのようなものを使用して考えた:sedを使ってawk変数を変更する方法
mycommand | awk {mv $1 altered$1}
問題は、2番目の$ 1 sedのいくつかの正規表現に置き換え変更する必要があるということです。 sedを2番目のパラメータにどのように適用できますか?
$()と|で試しましたが、うまくいきません。
私も
awk '{print $1 sed "s/[^A-Za-z0-9._-]/_/g" <<< $1}'
awk: cmd. line:1: Unexpected token
あなたのコマンドから返されたファイル名のリストをループし、 'sed'でそれらを修正することを考えましたか? 'for $(mycommand); do mv $ filename $(sed "s/[^ A-Za-z0-9 ._-]/_/g" <<< $ filename);完了しました。 – Abdou
ファイル名に空白が含まれている場合、 'for filename in $(mycommand)'は失敗します。 'while'ループはそれを避けることができます。 – John1024
'awk'は' sub() 'と' gsub() '関数を持ち、' sed 's/str/repl /'ができることのほとんどを実行できることを思い出してください。必要なものを得るためにいくつかの '[g] sub(/ regex /、" repl "、" str ")操作を行う必要があるかもしれません。がんばろう。 – shellter