Text-Processing

重複線條並使它們獨一無二?

  • July 16, 2015

我有以下文本行結構:

3923 001    L05 LV,L05 RM
3923 002    L12 RA,L12 LA
3923 003    I06 ALL
3923 004    G04 RV,Z09 ALL

但我需要這個:

3923 001    L05 LV
3923 001    L05 RM
3923 002    L12 RA
3923 002    L12 LA
3923 003    I06 ALL
3923 004    G04 RV
3923 004    Z09 ALL

這可以用正則表達式嗎?

基本上我需要每行複制它包含“,”的次數,然後從第 10 個字元開始變得唯一;如果我能完成第一部分,那麼只需複制每行 x 逗號的數量,我可以手動清理其餘部分

鑑於您的範例格式,這應該適用於初始大空間之後的任意數量的逗號分隔字元串(如果它是一個選項卡,只需將第二個空格更改s///\t

sed ':;h;s/,.*//;p;x;s/    [^,]*,/    /;t;d' file

3923 001    L05 LV
3923 001    L05 RM
3923 002    L12 RA
3923 002    L12 LA
3923 003    I06 ALL
3923 004    G04 RV
3923 004    Z09 ALL

如果你想要標籤然後

如果要將選項卡寫為 \t,可以使用 $ ’’ quotes: sed $ ‘:;h;s/,.*//;p;x;s/\t

$$ ^, $$*,/ /;t;d’。或者只是插入一個文字選項卡(對於 bash,您需要輸入 control-v 才能按字面意思輸入)。. —托比·斯佩特

引用自:https://unix.stackexchange.com/questions/216399