数据如下:
There is stuff here (word, word number phrases)
(word number anything, word phrases), even more
...
Run Code Online (Sandbox Code Playgroud)
在不同的文件中有很多它们。也有不同类型的数据,它们周围的数据格式都不相同。括号内的数据无法更改,并且始终在同一行。我不必处理:
(stuff number,
maybe more here)
Run Code Online (Sandbox Code Playgroud)
我希望能够用逗号代替逗号
所需的输出将是
There is stuff here (word: word number phrases)
(word number anything: word phrases), even more
...
Run Code Online (Sandbox Code Playgroud)
假设括号内只有一个逗号需要替换,则此POSIX BRE sed表达式将用冒号替换它:
sed 's/(\(.*\),\(.*\))/(\1:\2)/g' file
Run Code Online (Sandbox Code Playgroud)
如果有多个逗号,则仅替换最后一个逗号。
在多个逗号场景中,您只能将第一个逗号替换为:
sed 's/(\([^,]*\),\([^)]*\))/(\1:\2)/g' file
Run Code Online (Sandbox Code Playgroud)
这是awk的版本,它使用括号作为记录分隔符:
awk -v RS='[()]' 'NR%2 == 0 {sub(/,/,":")} {printf "%s%s", $0, RT}' file
Run Code Online (Sandbox Code Playgroud)
括号之间的内容将是每个偶数记录。该RT变量包含与RS该记录的模式匹配的字符。
请注意,这仅替换带括号的文本的第一个逗号。如果要全部替换,请使用gsub代替sub