variable の余分なスペースを削除するにはHEAD
?
HEAD=" how to remove extra spaces "
結果:
how to remove extra spaces
variable の余分なスペースを削除するにはHEAD
?
HEAD=" how to remove extra spaces "
結果:
how to remove extra spaces
これを試して:
echo "$HEAD" | tr -s " "
または、変数に保存したい場合もあります。
NEWHEAD=$(echo "$HEAD" | tr -s " ")
アップデート
先頭と末尾の空白を削除するには、次のようにします。
NEWHEAD=$(echo "$HEAD" | tr -s " ")
NEWHEAD=${NEWHEAD%% }
NEWHEAD=${NEWHEAD## }
awk の使用:
$ echo "$HEAD" | awk '$1=$1'
how to remove extra spaces
変数を引用しないことによる単語分割効果を利用する
$ HEAD=" how to remove extra spaces "
$ set -- $HEAD
$ HEAD=$*
$ echo ">>>$HEAD<<<"
>>>how to remove extra spaces<<<
位置パラメータを使用したくない場合は、配列を使用してください
ary=($HEAD)
HEAD=${ary[@]}
echo "$HEAD"
引用符で囲まないことの危険な副作用の1つは、ファイル名の拡張が機能することです。したがって、最初にオフにし、後で再度有効にします。
$ set -f
$ set -- $HEAD
$ set +f
この馬はまだ完全に死んでいません: 勝ち続けましょう! *
他の人が言及read
していますが、引用されていない展開を使用すると望ましくない展開が発生する可能性があるため、それを使用するすべての回答は多かれ少なかれ同じと見なすことができます。あなたができる
set -f
read HEAD <<< $HEAD
set +f
またはあなたができる
read -rd '' -a HEAD <<< "$HEAD" # Assuming the default IFS
HEAD="${HEAD[*]}"
$ shopt -s extglob
$ HEAD="${HEAD//+( )/ }" HEAD="${HEAD# }" HEAD="${HEAD% }"
$ printf '"%s"\n' "$HEAD"
"how to remove extra spaces"
*実際に危害を加えられた馬はいません。これは、単純な質問に対して 6 つ以上の多様な回答を得るための比喩にすぎません。
sedでそれを行う方法は次のとおりです。
string=' how to remove extra spaces '
echo "$string" | sed -e 's/ */ /g' -e 's/^ *\(.*\) *$/\1/'
=> how to remove extra spaces # (no spaces at beginning or end)
最初の sed 式は、複数のスペースのグループを 1 つのスペースに置き換え、2 番目の式は末尾または先頭のスペースをすべて削除します。
echo -e " abc \t def "|column -t|tr -s " "
column -t
意思:
tr -s " "
複数のスペースを 1 つのスペースに絞り込みます
ところで、使用できる出力全体を表示するには、cat - -A
タブと EOL を含むすべての空白文字を表示します。
echo -e " abc \t def "|cat - -A
出力:abc ^I def $
echo -e " abc \t def "|column -t|tr -s " "|cat - -A
出力:
abc def$
これを試してください:
echo ' how to remove extra spaces ' | sed 's/^ *//g' | sed 's/$ *//g' | sed 's/ */ /g'
また
HEAD=" how to remove extra spaces "
HEAD=$(echo "$HEAD" | sed 's/^ *//g' | sed 's/$ *//g' | sed 's/ */ /g')