【问题标题】:Split string into array with bash/awk使用 bash/awk 将字符串拆分为数组
【发布时间】:2016-01-27 13:58:21
【问题描述】:
我有一个形式的字符串:
"\nFIRST_ITEM\nSECOND_ITEM\nTHIRD_ITEM\n"
当我尝试使用 awk 将其拆分为这样的数组时,
echo "\nFIRST_ITEM\nSECOND_ITEM\nTHIRD_ITEM\n" | awk '{split($0,a,"\n")}'
整个字符串按原样存储到 a[1] 中。有人可以解释为什么会发生这种情况以及如何解决它吗?
【问题讨论】:
标签:
arrays
linux
bash
shell
awk
【解决方案1】:
从您的问题中不清楚,但这可能是您正在寻找的:
$ echo "\nFIRST_ITEM\nSECOND_ITEM\nTHIRD_ITEM\n" |
awk '{split($0,a,/\\n/); for (i=1;i in a;i++) print i, "<" a[i] ">"}'
1 <>
2 <FIRST_ITEM>
3 <SECOND_ITEM>
4 <THIRD_ITEM>
5 <>
假设您的 echo 将 \n 输出为字符串 \n 而不是换行符。
【解决方案2】:
您可以使用bash:
a="\nFIRST_ITEM\nSECOND_ITEM\nTHIRD_ITEM\n"
a=( ${a//\\n/ } )
它将每个\n 替换为一个空格。