xI有这种形式的文本:
foo1 bar1 xId "myId1";yId "something"
foo2 bar2 xId "myId2";yId "something"
foo2 bar2 yId "something";xId "myId3"
如何使用sed编辑myId字段?我想在它之前附加一个值,如下所示:
foo1 bar1 xId "prefix_myId1";yId "something";
foo2 bar2 xId "prefix_myId2";yId "something";
foo2 bar2 yId "something";xId "prefix_myId2";
我不能使用awk,因为xId并不总是在我的文件中的同一个地方。但是,保证该行采用以下格式: someStuff xId" myContent&#34 ;; someOtherStuff
非常感谢,我可以使用
sed 's/\(.*xId \)[^ ]*\(;.*\)/ a \1"newValue"\2/'
但它用newValue替换内容而不是为它添加前缀...
捕获组应该使用xId
编辑显示部分内容,感谢您的评论
答案 0 :(得分:2)
sed 's/\([[:space:];]xId[[:space:]]\{1,\}"\)/\1prefix_/' YourFile
假设,将根据您的结构为字符串内容添加前缀
xld "
答案 1 :(得分:1)
使用sed
:
sed -r 's/(xId\s*[^"]*")([^"]*)/\1prefix_\2/' input.txt
我使用了两个捕获组:([^"]*")
捕获xId
之后的所有内容,包括它们。 "
选择([^"]*)
之间的内容。
在替换模式中,我重新组合组并注入术语"
。