gpt4 book ai didi

linux - 需要在 linux 中将制表符分隔的文本拆分为多个变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:06 25 4
gpt4 key购买 nike

我需要在单行命令中将一行拆分为多个变量。我需要将选项卡之间的每个字段提取到一个单独的变量中。例如:

000345AA6| |N|20150410|A & M FRNT 3/01/17|

我正在使用 awk 获取每个字段,然后使用 eval 将变量从 awk 导出到 shell。由于最后一个字段(第 5 个)有一个空格,我收到了一个错误。

代码:

z=`echo "000380105| |%|20150410|ABCAM PLC ADR |" | awk -F "|" '{print "SOURCE_FIELD2="$2;SOURCE_FIELD3=$3;print "SOURCE_FIELD4="$4;SOURCE_FIELD5=$5;}'`
eval "$z"
echo $SOURCE_FIELD4

实际输出:

test.ksh[12]: PLC:  not found

预期:

ABCAM PLC ADR

我一行有19个字段,想给性能好的变量赋值。使用 cut 命令花费的时间太长,因为我需要对大约 130k 行执行此操作。

最佳答案

使用 IFS=delim read -a array 将字段读入数组,拆分 $IFS 中的字符。

while IFS='|' read -r -a fields; do
printf '[%s]\n' "${fields[@]}"

echo "${fields[0]}"
echo "${fields[1]}"
...
done < file.txt

关于linux - 需要在 linux 中将制表符分隔的文本拆分为多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com