Учитывая этот входной файл:
junk
junk
junk
junk
junk
junk
junk
junk
junk
junk
dataA,dataB,dataC,dataD,dataE,dataF
,,,,dataX,dataY
,,,,dataX,dataY
,,,,dataX,dataY
,,,,dataX,dataY
dataG,dataH,dataI,dataJ,dataK,dataL
,,,,dataX,dataY
,,,,dataX,dataY
,,,,dataX,dataY
,,,,dataX,dataY
dataM,dataN,dataO,dataP,dataQ,dataR
,,,,dataX,dataY
,,,,dataX,dataY
,,,,dataX,dataY
,,,,dataX,dataY
Кажется, это помогает:
$ awk 'BEGIN {FS=","; OFS=","} NR<11 {next} (NR-11)%5==0 { d1=$1;d2=$2;d3=$3;d4=$4 } (NR-11)%5 { print d1,d2,d3,d4,$5,$6}' input2
dataA,dataB,dataC,dataD,dataX,dataY
dataA,dataB,dataC,dataD,dataX,dataY
dataA,dataB,dataC,dataD,dataX,dataY
dataA,dataB,dataC,dataD,dataX,dataY
dataG,dataH,dataI,dataJ,dataX,dataY
dataG,dataH,dataI,dataJ,dataX,dataY
dataG,dataH,dataI,dataJ,dataX,dataY
dataG,dataH,dataI,dataJ,dataX,dataY
dataM,dataN,dataO,dataP,dataX,dataY
dataM,dataN,dataO,dataP,dataX,dataY
dataM,dataN,dataO,dataP,dataX,dataY
dataM,dataN,dataO,dataP,dataX,dataY
Чтобы разбить сценарий awk
:
BEGIN {
FS="," # Set the field separators for
OFS="," # input and output for CSV data
}
NR<11 {next} # Skip the first ten lines of the file
(NR-11)%5==0 { # On every fifth line after the tenth,
d1=$1 # Use variables to hold the data values
d2=$2 # which are to be copied to the next
d3=$3 # few rows of output
d4=$4
}
(NR-11)%5 { # On all non such lines after the tenth,
# Print the data, substituting the data held from the marker lines
print d1,d2,d3,d4,$5,$6
}
Вы не должны создавать эти последовательности в первую очередь. Это напечатает пробелы для управляющих символов(\pC
)и даст меткам(\pM
)место для перемещения :
perl -CO -pe 's{^([0-9A-F]+)\b}{$x=$1,$c=chr hex $x;if($c=~/\pC/){$c=" "}elsif($c=~/\pM/){$c=" $c"}"$c $x"}e' NamesList.txt
(используйте -i NamesList.txt
, если вы хотите отредактировать файл на месте)
См. Свойства символов Unicode . Суррогаты, двунаправленные метки и другие элементы управления, которые вы НЕ хотите отображать, находятся в категории «Другое»(\pC
). Акценты и другие объединяющие знаки находятся в категории «Знаки»(\pM
).