sed - 在2个字符串之间查找文本并将其用于替换

cod*_*ine 0 unix awk replace sed

我有一个包含许多行的文件,如下所示:

townValue.put("Aachen");    
townValue.put("Aalen");             
townValue.put("Ahlen");             
townValue.put("Arnsberg");          
townValue.put("Aschaffenburg");         
townValue.put("Augsburg");
Run Code Online (Sandbox Code Playgroud)

我想将此行更改为:

townValue.put("Aalen", "Aalen");            
townValue.put("Ahlen", "Ahlen");            
townValue.put("Arnsberg", "Arnsberg");          
townValue.put("Aschaffenburg", "Aschaffenburg");        
townValue.put("Augsburg", "Augsburg");
Run Code Online (Sandbox Code Playgroud)

我如何用sed或awk实现这一目标.这似乎是一个特殊的查找和替换任务,我在网上找不到.

谢谢您的帮助

fal*_*tru 6

用途sed -e 's/"[^"]*"/&, &/':

$ cat 1
townValue.put("Aachen");    
townValue.put("Aalen");             
townValue.put("Ahlen");             
townValue.put("Arnsberg");          
townValue.put("Aschaffenburg");         
townValue.put("Augsburg");
$ sed -e 's/"[^"]*"/&, &/' 1
townValue.put("Aachen", "Aachen");    
townValue.put("Aalen", "Aalen");             
townValue.put("Ahlen", "Ahlen");             
townValue.put("Arnsberg", "Arnsberg");          
townValue.put("Aschaffenburg", "Aschaffenburg");         
townValue.put("Augsburg", "Augsburg");
Run Code Online (Sandbox Code Playgroud)

根据sed(1):

S /正则表达式/更换/

尝试将regexp与模式空间匹配.如果成功,请替换与替换匹配的部分.替换可以包含特殊字符&以引用匹配的模式空间的那部分,并且特殊转义\ 1到\ 9来引用正则表达式中相应的匹配子表达式.