windows - sed 或 awk - 需要获取子字符串并将其附加到行尾

标签 windows text sed awk substring

我使用的是 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/

相关文章:

perl - 合并来自不同文件的列

windows - 如何与任何操作系统共享私有(private)本地 git 服务器

windows - 是否有人使用 libgit2、libgit2sharp、Ngit 来替代 msysgit 的 Windows?

iphone - UILabel 中心内容

regex - 在 bash/sed 中,如何匹配小写字母后跟大写字母?

linux - 使用 sed 替换具有匹配模式的行

c - 如何在 MinGW 中使用预编译静态库?

c++ - 将 Qt 应用程序的状态保存到文件中

javascript - 粒子的动态文本变化

java - 需要帮助使用 java 读取文件、插入修剪命令、编辑字符串,然后将文件保存为输出