我正在尝试读取带有空格作为一个单词和多个空格作为第二个单词的单词。是否有捷径可寻:
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'