将带有空格的单词视为一个单词

将带有空格的单词视为一个单词

我正在尝试读取带有空格作为一个单词和多个空格作为第二个单词的单词。是否有捷径可寻:

UNLIMITED TABLESPACE                     TRUSH
SELECT ANY DICTIONARY                    KENNYGO

根据示例,Unlimited Tablespace将是一个单词和Trush第二个单词。Select any dictionary一个词和Kennygo第二个词。

我正在尝试使用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'

相关内容