帮助使用 IF 和 SED 替换 \n

帮助使用 IF 和 SED 替换 \n

我有一个文件名变量有时设置为:

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

相关内容