我正在使用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