空白のある単語を1つの単語として扱う

空白のある単語を1つの単語として扱う

1つの単語でスペースがあり、2番目の単語で複数のスペースがある単語を読み取ろうとします。見つけることができるショートカットはありますか?

UNLIMITED TABLESPACE                     TRUSH
SELECT ANY DICTIONARY                    KENNYGO

例によると、1つの単語と2番目の単語にUnlimited Tablespaceなります。 1つの単語と2番目の単語。TrushSelect any dictionaryKennygo

readこれを行うには、次のコマンドを使用しようとします。

while IFS="  " read -r privilege name; do
    echo "$privilege" break "$name"
done < sysprivs.exp 

現在の結果セットは次のとおりです。

UNLIMITED break TABLESPACE                     TRUSH
SELECT break ANY DICTIONARY                    KENNYGO

どんな提案がありますか?

ベストアンサー1

まず、入力をフィルタリングして、read繰り返す前に複数のスペースを改行に変換できます。

(<sysprivs.exp sed 's/\ \ \+/\n/g' | while read word; do echo "Word: \`$word'"; done)

出力:

Word: `UNLIMITED TABLESPACE'
Word: `TRUSH'
Word: `SELECT ANY DICTIONARY'
Word: `KENNYGO'

おすすめ記事