Nei*_*ski 6 bash tab-delimited string-split
我有我的字符串,$LINE我想$ITEMS成为它的数组版本,在单个选项卡上拆分并保留空白。这是我现在所处的位置:
IFS=$'\n' ITEMS=($(echo "$LINE" | tr "\t" "\n"))
Run Code Online (Sandbox Code Playgroud)
这里的问题IFS是一个或多个,所以它吞噬了换行符、标签等。我已经根据此处发布的其他问题尝试了其他一些方法,但他们认为所有字段中总会有一个值,永远不会为空。而那个似乎掌握关键的人远远超出了我并且对整个文件进行了操作(我只是拆分了一个字符串)。
我的偏好是纯 BASH 解决方案。
IFS如果字符是空格,则仅是一个或多个。非空白字符是单个分隔符。因此,如果您确信字符串中不存在某些非空白字符,一个简单的解决方案是将制表符转换为该字符,然后对其进行拆分:
IFS=$'\2' read -ra ITEMS <<<"${LINE//$'\t'/$'\2'}"
Run Code Online (Sandbox Code Playgroud)
不幸的是,像“输入中没有实例\2”这样的假设从长远来看往往会失败,其中“从长远来看”翻译为“在最坏的情况下”。因此,您可能需要分两步进行:
IFS=$'\2' read -ra TEMP < <(tr $'\t\2' $'\2\t' <<<"$LINE")
ITEMS=("${TEMP[@]//$'\t'/$'\2'}")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11114 次 |
| 最近记录: |