2016-10-03 60 views
0

爲了滿足遺留代碼,我必須添加日期到如下所示的文件名(它肯定需要並且不能修改遺留代碼:()。但是我需要刪除日期沒有去到一個新行相同的命令,這個命令是從一個文本文件中讀取,所以我應該在單個命令內做到這一點。Unix:在單一命令中從字符串中刪除日期

$((echo "$file_name".`date +%Y%m%d`| sed 's/^prefix_//') 

所以我在這裏去除文件名前綴並添加附加的日期我也想刪除我添加的日期,例如:prefix_filename.txt或prefix_filename.zip應該給我如下:

Expect ED輸出:

filename.txt 
filename.zip 

電流輸出:

filename.txt.20161002 
filename.zip.20161002 
+1

談論遺留代碼會讓您的問題難以閱讀。你真正的問題是什麼?你是否必須從文件名中刪除日期,或者刪除前綴而不添加日期? –

+0

你可以單獨回顯日期字符串嗎,沒有文件名或sed命令? – Beta

+0

我需要添加日期到我提到的命令,並刪除它再次刪除前綴,我已經在做。 –

回答

0

Assumming所有的文件格式爲filename.ext.date,可以通過管道輸出到「剪切」命令並獲得唯一的第一和第二田:

~> X=filename.txt.20161002 
~> echo $X | cut -d"." -f1,2 
filename.txt 
+0

這就是某種程度上沒有發生:(所有的文件名都是不同的格式 –

+0

提供更多的可能的文件名的例子,以及如何過濾它們 – chenchuk

+0

prefix_account_information.zip,prefix_employee_names_ssn.zip,prefix_employee address.txt,prefix_employee_salary。DAT等是一些例子 –

0

我不知道我理解正確,你的問題,但也許這你想要做什麼:

$((echo "$file_name".`date +%Y%m%d`| sed -e 's/^prefix_//' -e 's/\.[^.]*$//') 
+0

你提到的是正確的,但真正的文件名可能有多個文件名週期,如(prefix_original.report.status.txt或prefix_ooriginal.report.zip或prefix_original.status.DAT) –

+0

@KarthikeyanChidambaram:你想要什麼輸出是在那些情況下?在這些情況下你有沒有測試過這個解決方案? – Beta

0

樣品輸入:

cat sample 
prefix_original.txt.log.tgz.10032016 
prefix_original.txt.log.10032016 
prefix_original.txt.10032016 
prefix_one.txt.10032016 
prefix.txt.10032016 
prefix.10032016 

grep從字符串直到字面點"."後按數字的開始。

grep -oP '^.*(?=\.\d)' sample 
prefix_original.txt.log.tgz 
prefix_original.txt.log 
prefix_original.txt 
prefix_one.txt 
prefix.txt 
prefix 

或許,以下應使用:

grep -oP '^.*(?=\.\d)|^.*$' sample 
0

如果我正確理解你的問題,你想從一個變量中刪除的日期部分,並且您已經從該變量不根據上下文知道包含日期部分,並且該部分在名稱的最後階段之後出現。

在這種情況下,問題歸結爲刪除最後一段時間以及後續內容。

這是可以做到(POSIX殼時,bash,zsh中,KSH)由

filename_without=${filename_with%.*} 

假設filename_with包含具有在端的日期部分的文件名。

0
% cat example 
filename.txt.20161002 
filename.zip.20161002 

    % cat example | sed "s/.[0-9]*$//g" 
filename.txt 
filename.zip 

% 
+0

儘管此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess