我有一个list.txt文件,其中包含文件路径列表:
/old/file/path/directory
/old/file/path/mydirectory
我正在尝试执行以下操作:
/path/directory
/path/mydirectory
要做到这一点,我正在使用 sed :
OLDPATH=/old/file/
sed "\|$OLDPATH|d" list.txt > newlist.txt
但是这会完全删除该行。如何仅使用sed
和变量$OLDPATH
删除我想要的部分?
答案 0 :(得分:1)
相反,您可以使用以下语法:
OLDPATH="/old/file"
sed "s#$OLDPATH##" list.txt > newlist.txt
这会查找$OLDPATH
并将其删除,而您的|d
会删除包含所提供模式的行。
根据您给定的输入数据,它返回:
/path/directory
/path/mydirectory
答案 1 :(得分:0)
如果您的所有行都以OLDPATH
开头,则可以使用
cut -c $(echo -n "$OLDPATH" | wc -c)-
或更好:
cut -c "$((${#OLDPATH}+1))"-