例如,我有一个包含以下行的文件:
"abc":"def"
我需要在123
和"abc":"
之间插入def"
,以便该行变为:"abc":"123def"
。
因为"abc"
只出现一次所以我想我可以搜索它并进行插入。
如何使用bash脚本执行此操作,例如sed
或awk
?
答案 0 :(得分:1)
AMD$ sed 's/"abc":"/&123/' File
"abc":"123def"
匹配"abc":"
,然后将此匹配附加到123
(&
将包含匹配的字符串"abc":"
)
如果您想在:
之前和之后照顾空间,可以使用:
sed 's/"abc" *: *"/&123/'
要替换所有此类模式,请将g
与sed
一起使用。
sed 's/"abc" *: *"/&123/g' File
答案 1 :(得分:0)
library(tidyverse)
mget(listpop) %>%
map(~.[c("SNP", "POP", "MAF")] %>%
bind_rows()
:
sed
$ sed -E 's/(:")(.*)/\1123\2/' <<<'"abc":"def"'
"abc":"123def"
获取(:")
并放入捕获的第1组
:"
获取剩余部分并放入捕获的第2组
在替换中,(.*)
将\1123\2
置于各组之间
123
:
awk
在$ awk -F: 'sub(".", "&123", $2)' <<<'"abc":"def"'
"abc" "123def"
函数中,正在操作第二个(sub()
)字段,模式用作$2
(与.
匹配),并在替换匹配的部分("
)后跟&
。
答案 2 :(得分:0)
echo '"abc":"def"'| awk '{sub(/def/,"123def")}1'
"abc":"123def"