[英]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.