我在 file.txt 中有这些数据:
1234-abca-dgdsf-kds-2;abc dfsfds 2
123-abcdegfs-sdsd;dsfdsf dfd f
12523-cvjbsvndv-dvd-dvdv;dsfdsfpage
我想替换“-”到“;”之间的字符串只有“;”,所以我得到:
1234;abc dfsfds 2
123;dsfdsf dfd f
12523;dsfdsfpage
我尝试了命令:
sed -e "s/-.*;/;" file.txt
但它给了我以下错误:
sed command garbled
为什么会这样?
最佳答案
sed
替换命令定义为 ( source ):
's/REGEXP/REPLACEMENT/[FLAGS]'
(substitute) Match the regular-expression against the content of the pattern space. If found, replace matched string with REPLACEMENT.
但是,你是说:
sed "s/-.*;/;"
即:
sed "s/REGEXP/REPLACEMENT"
因此在表达式末尾缺少“/”。只需添加它即可:
sed "s/-.*;/;/"
# ^
关于linux - sed 返回 "sed: command garbled",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388443/