請有人可以讓我知道我怎麼會變成這樣:解析開始和結束日期與sed的
part1-part2-part3-2012-07-23-2012-07-23.csv
成這樣:
part1-part2-part3.csv
的part1-part2-part3
是另一個字符串替換,所以不應該不被視爲常量。
我認爲sed
可能是這項工作的最佳工具,雖然我可以及時解決這個問題,但我的工作時間很緊。
任何幫助真的很感激。
請有人可以讓我知道我怎麼會變成這樣:解析開始和結束日期與sed的
part1-part2-part3-2012-07-23-2012-07-23.csv
成這樣:
part1-part2-part3.csv
的part1-part2-part3
是另一個字符串替換,所以不應該不被視爲常量。
我認爲sed
可能是這項工作的最佳工具,雖然我可以及時解決這個問題,但我的工作時間很緊。
任何幫助真的很感激。
$ echo 'part1-part2-part3-2012-07-23-2012-07-23.csv' | \
sed -re 's/^(.*)(-[0-9]+){6}(.*)$/\1\3/'
part1-part2-part3.csv
這完成了這項工作,謝謝。 – peterRepeater 2012-07-24 11:31:00
這個sed
命令可以完成這項工作。它匹配一個日期,並將其用作第二組比賽的第一組,因爲它們是相同的。
sed -e 's/\(-[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)\1\(\.csv\)$/\2/'
$ echo part1-part2-part3-2012-07-23-2012-07-23.csv | sed 's/-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]//'
part1-part2-part3.csv
另外,如果你知道你需要從-2012刪除所有字符行的末尾 你可以做簡單:
$ echo part1-part2-part3-2012-07-23-2012-07-23.csv | sed 's/-2012.*/.csv/'
輸入。 txt
part1-part2-part3-2012-07-23-2012-07-23.csv
代碼
$> SED的/ [0-9] [0-9] // G'INPUT.TXT | SED的/ --- * // G'
輸出
part1-part2-part3.csv
http://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html
echo part1-part2-part3-2012-07-23-2012-07-23.csv | \
awk -v FS='-2012-07[^.]*' '{print $1 $2}'
cut
在這種情況下比sed
一個利特勒簡單:
fname=part1-part2-part3-2012-07-23-2012-07-23.csv
new_fname="$(echo $fname | cut -d- -f1-3).csv"
$ echo part1-part2-part3-2012-07-23-2012-07-23.csv |
> awk -F '-' '{ print $1"-"$2"-"$3".csv" }'
part1-part2-part3.csv
我已經與這一個@codaddict,但是感謝大家的輸入 - 真正的讚賞。 – peterRepeater 2012-07-24 12:37:35