我使用的是 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
我需要抓取第一个字段,例如在第四次出现后松弛后抓取字符串:
\\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
的一种方法:
awk -F ";" '{ a = $0; sub(/^\\\\[^\\]*\\[^\\]*/,""); gsub(/\\/,"/",$1); print a $1 }' file
或者简化正则表达式:
awk -F ";" '{ a = $0; sub(/^\\(\\[^\\]*){2}/,""); gsub(/\\/,"/",$1); print a $1 }' file
结果:
\\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
关于windows - sed 或 awk - 需要获取子字符串并将其附加到行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13997875/