我有一个文件名变量有时设置为:
attachment;
JobRunStatisticsReport_20150122.zip
在文件管理器窗口中,它看起来像这样:
我需要帮助想出一个 IF 语句来表达:
如果 $filename 包含 'attachment; \n' 那么
然后帮助 SED 查找新行字符 (\n) 并将其和其之前的所有内容替换为空。
有人能帮帮忙吗?
答案1
您的文件名实际上包含回车符和换行符。bash 参数扩展可以处理这个问题:
$ filename=$'attachment;\r\nJobRunStatisticsReport_20150122.zip'
$ echo "$filename"
attachment;
JobRunStatisticsReport_20150122.zip
$ shopt -s extglob
$ echo "${filename##attachment;*([[:space:]])}"
JobRunStatisticsReport_20150122.zip
不会影响“正常”文件名:
$ filename="no attachment here"
$ echo "${filename##attachment;*([[:space:]])}"
no attachment here