Я скопированная 3 столбцов данных в файл через запятую (,) и делать некоторые строки манипуляцию, но не знают, почему пустой «» добавляются для каждого линейчатогоРазбор данных с использованием AWK
Моего Входного файл-
"['3.FIT-DYN', '3.MYFIT-LTR-DYN']",FIT-L-PHY-PRM-GI,2014-07-11 14:07:28+0000
['1.839324'],4.FIDCWRRTL,2015-04-16 12:04:21+0000
,4.AIQM,2015-04-16 12:04:21+0000
Если вы видите, что только 3-я строка имеет пустые данные на первом месте.
мои awk-
BEGIN { FS=",?\"?[][]\"?,?"; OFS="," }
{
if (split($2,a,/\047/)) {
for (j=2; j in a; j+=2) {
$2 = a[j]
prt()
}
}
else {
prt()
}
}
function prt( out) {
out = "\047" $0 "\047"
gsub(OFS,"\047,\047",out)
print out
}
о/р-
'','3.FIT-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
'','3.MYFIT-LTR-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
'','1.839324','4.FIDCWRRTL','2015-04-16 12:04:21+0000'
'','4.AIQM','2015-04-16 12:04:21+0000'
ожидаемые о/р-
'3.FIT-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
'3.MYFIT-LTR-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
'1.839324','4.FIDCWRRTL','2015-04-16 12:04:21+0000'
'','4.AIQM','2015-04-16 12:04:21+0000'
Первый аргумент для суб() и 3RG арг для раскола() являются регулярными выражениями, а не строки, так что вы должны быть с помощью регулярных выражений ограничителей '' /.../ вместо строковых разделителей '" ... "'. Первые определяют константы регулярного выражения, которые берутся как есть, тогда как последние определяют динамические регулярные выражения, которые нужно анализировать дважды, один раз для преобразования из строки в регулярное выражение, а затем снова при использовании в качестве регулярного выражения и, следовательно, имеют некоторые дополнительные сложности, включая требование удвоение побегов. Используйте 'sub (/ regexp /, string)' и 'split (string, array,/regexp /)' если это необходимо, например, для создания regexp через конкатенацию: 'sub (" foo "$ 1," bar ")'. –
@EdMorton Справедливая точка. –