先行スペースと末尾のスペースとアンダースコアを削除する方法は?

先行スペースと末尾のスペースとアンダースコアを削除する方法は?

空白部分は機能しますが、削除のためにアンダースコアを表示する簡単な方法はありますか?

echo \"" & [applescript string input] & "\" | xargs

コンテキスト:

アップルスクリプト:

on trim(i)
    return (do shell script "echo \"" & i & "\" | xargs")
end trim

set input to "  _someString "
set output to trim(input)
  • 現在の出力:予想どおり「_some_String」です。
  • 希望の出力: "some_String"

ベストアンサー1

前後の空白文字と下線は、次の方法で削除できますsed

sed 's/^[_[:space:]]*//; s/[_[:space:]]*$//'

これは次のとおりです。

  _foo_bar_
_ _ _ x  y _ _

入力する:

foo_bar
x  y

xargsいずれにせよ、テキスト処理には使用しないでください。xargs非常に具体的な方法で入力を処理します。これはユーザーが望むものとほとんど異なります(一部の空白文字を分割し、そのリストは実装ごとに異なり、引用符とバックスラッシュを一意の方法で処理し、いくつかの実装は意味の_終わりとして扱われます)。窒息、いくつかは行の長さまたは引数の数の制限が非常に低いです...)echoコマンドが提供されていない場合、デフォルトで実行されます。これは悪名高い、利用できず、移植可能で、プロセス出力ラインも生成します。それぞれ(そしてecho各出力でスタンドアロンユーティリティを実行します)

一部のsed実装では、テキストではなく入力や長すぎる行もブロックします。

おすすめ記事