我正在寻找一个允许移动的sed表达式:
expression1\expression2\expression3
到
expression1\expression3
和ofcourse expression2在我需要执行命令的所有文件中都是不同的。
现在我的解决方案是专注于expression2之间的两个'\'
,但我找不到正则表达式来匹配2个已知字符之间的任何单词。
有任何想法一次性这样做吗?
答案 0 :(得分:3)
您可以尝试使用以下sed命令将\
(包括\
)中的所有字符替换为\
$ echo 'expression1\expression2\expression3' | sed 's~\\.*\\~\\~g'
expression1\expression3
$ echo 'expression1\expression2\expression3' | sed 's~\\[^\\]*\\~\\~g'
expression1\expression3
答案 1 :(得分:1)
您可以使用awk:
s='expression1\expression2\expression3'
awk 'BEGIN{FS=OFS="\\"} {print $1, $3}' <<< "$s"
expression1\expression3
使用sed:
sed 's~^\([^\\]*\)\\[^\\]*\(\\.*\)$~\1\2~' <<< "$s"
expression1\expression3