簡體   English   中英

需要在Linux中將制表符分隔的文本拆分為多個變量

[英]need to split tab delimited text into multiple variables in linux

我需要在一行命令中將一行拆分為多個變量。 我需要將制表符之間的每個字段都提取到一個單獨的變量中。 例如:

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命令花費的時間太長,因為我需要大約13萬行。

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM