-3
perl -nle '
if($. == 1)
{ (@a)=/([\w - .]+)(?=,|\s*$)/g }
else
{
(@b)=/([\w - .]+)(?=,|\s*$)/g;
print "$a[0]|$b[0]|$b[1]|$b[2}|$a[$_]|$b[$_+3]" foreach (0..$#a)
}
' ip.txt >op.txt
輸入數據:
SRC|PIM2016.csv|MMRPPS|RED|SRC|334
SRC|PIM2016.csv|MMRPPS|RED|FI|114
SRC|PIM2016.csv|MMRPPS|RED|QMA|120
SRC|PIM2016.csv|MMRPPS|RED|PCG|34
SRC|PIM2016.csv|MMRPPS|RED|PCC|123
SRC|PIM2016.csv|MMRPPS|RED|PREI|725
SRC|PIM2016.csv|MMRPPS|RED|G T|
需要的輸出:
src,FI,QMA,PCG,PCC,PREI,G T
PIM2016.csv,MMR.S T - RED,334,114,120,34,123,725
與最新的腳本輸出:
SRC|PIM2016.csv|MMRPPS|S T - RED|FI|334
SRC|PIM2016.csv|MMRPPS|S T - RED|QMA|114
SRC|PIM2016.csv|MMRPPS|S T - RED|PCG|120
SRC|PIM2016.csv|MMRPPS|S T - RED|PCC|34
SRC|PIM2016.csv|MMRPPS|S T - RED|PREI|123
SRC|PIM2016.csv|MMRPPS|S T - RED|G T|725
如果您當前的嘗試在[tag:perl]中,爲什麼用[tag:awk]標記? –
@TomFenech:顯然規範已經改變:-) http://stackoverflow.com/questions/39612637/unix-awk-scripting-to-convert-columns-to-rows。祝你們好運。 – shellter