我有以下字符串:
/ book / A00001 / 2018/01/15 / Chamber_Music
我想使用sed命令:
/ book / A00001 / 2018/01/15 /
谢谢
致谢
答案 0 :(得分:1)
也许您正在寻找:sed "s/\(.*\)Chamber_Music/\1/g"
答案 1 :(得分:0)
无需使用sed
,可以使用常规的shell字符串处理:
filename='gash.txt'
new_filename="$filename.new"
while read line
do
line=${line%/*}
echo $line
done <"$filename" >"$new_filename"
#mv "$new_filename" "$filename" # Commented out to be optional
在第二个问题中输入您的意见:
/book/A00001/2018/01/15
/book/A00001/2018/01/15
/book/A00001/2018/01/15
/book/A00001/2018/01/15
/book/A00001/2018/01/15
/book/A00001/2018/01/15
答案 2 :(得分:0)
您可以更改正则表达式sed
分隔符。...请参见s
命令文档。如果您使用例如
sed 's:([a-zA-Z0-9/]*)[a-zA-Z]*$:\1:'
然后,/
失去特殊待遇,而:
字符承担特殊待遇。当然,您可以将匹配的模式存储在环境变量中,然后再将其提供给sed(1)
,然后将所有/
替换为\/
以逃避每个/
。>
pattern=`echo "([a-zA-Z0-9/])[a-zA-Z]*\$" | sed 's/\//\\//'`
sed "s/${pattern}/\\1/"
但这比较复杂。