我正在使用Windows sed/awk,但Unix命令相似,

文件1

\\FILE09\12GAGE\LOAN CLOSING UNIT;\\FILE09\12GAGE;/fs8_100X/FILE09/bu/12gage
\\FILE44\FILE44\BU\EARPS\FUNDCHECK;\\FILE44\FILE44;/fs6_451B/FILE44
\\FILE15\FILE15\BU\MICROSOFT MACRO REMEDIATION;\\FILE15\FILE15;/fs6_100X/FILE15

要求的输出:
\\FILE09\12GAGE\LOAN CLOSING UNIT;\\FILE09\12GAGE;/fs8_100X/FILE09/bu/12gage/LOAN CLOSING UNIT
\\FILE44\FILE44\BU\EARPS\FUNDCHECK;\\FILE44\FILE44;/fs6_451B/FILE44/BU/EARPS/FUNDCHECK
\\FILE15\FILE15\BU\MICROSOFT MACRO REMEDIATION;\\FILE15\FILE15;/fs6_100X/FILE15/BU/MICROSOFT MACRO REMEDIATION

我需要抓取第一个字段,例如在出现第4次后退时抓取字符串:
\\FILE44\FILE44\BU\EARPS\FUNDCHECK

它将是\BU\EARPS\FUNDCHECK,然后将反斜杠转换为斜杠:/BU/EARPS/FUNDCHECK
然后将其附加到该行的末尾。
\\FILE44\FILE44\BU\EARPS\FUNDCHECK;\\FILE44\FILE44;/fs6_451B/FILE44/BU/EARPS/FUNDCHECK

最佳答案

这种单线可能会起作用:

 awk -F';' '{x=$1;sub(/\\\\[^\\]+\\[^\\]+\\/,"",x);gsub(/\\/,"/",x);print $0"/"x}' file

测试
kent$  awk -F';' '{x=$1;sub(/\\\\[^\\]+\\[^\\]+\\/,"",x);gsub(/\\/,"/",x);print $0"/"x}' test
\\FILE09\12GAGE\LOAN CLOSING UNIT;\\FILE09\12GAGE;/fs8_100X/FILE09/bu/12gage/LOAN CLOSING UNIT
\\FILE44\FILE44\BU\EARPS\FUNDCHECK;\\FILE44\FILE44;/fs6_451B/FILE44/BU/EARPS/FUNDCHECK
\\FILE15\FILE15\BU\MICROSOFT MACRO REMEDIATION;\\FILE15\FILE15;/fs6_100X/FILE15/BU/MICROSOFT MACRO REMEDIATION

10-06 08:02