2

誰かが私がこれをどのように変えるかを私に知らせてもらえますか?

part1-part2-part3-2012-07-23-2012-07-23.csv

これに:

part1-part2-part3.csv

これpart1-part2-part3は別の文字列の代わりになるため、定数として扱わないでください。

おそらくこの仕事に最適なツールだと思いますsed。これは時間内に解決できましたが、厳しいスケジュールで作業しています。

どんな助けでも本当にありがたいです。

4

7 に答える 7

1
$ echo 'part1-part2-part3-2012-07-23-2012-07-23.csv' |  \
  sed -re 's/^(.*)(-[0-9]+){6}(.*)$/\1\3/'
part1-part2-part3.csv
于 2012-07-24T10:12:27.643 に答える
0

このsedコマンドはその仕事をします。1つの日付に一致し、2番目の一致のグループ1として使用します。これは、それらが同一であるためです。

sed -e 's/\(-[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)\1\(\.csv\)$/\2/'
于 2012-07-24T10:11:51.577 に答える
0
$ 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/'
于 2012-07-24T10:12:08.047 に答える
0

Input.txt

part1-part2-part3-2012-07-23-2012-07-23.csv

コード

$> sed's / [0-9] [0-9] // g'Input.txt | sed's / --- * // g'

出力

part1-part2-part3.csv
于 2012-07-24T10:51:00.133 に答える
0

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}'
于 2012-07-24T10:57:30.680 に答える
0

cutsedこの場合よりも少し単純です:

fname=part1-part2-part3-2012-07-23-2012-07-23.csv
new_fname="$(echo $fname | cut -d- -f1-3).csv"
于 2012-07-24T12:41:10.733 に答える
0


$ echo part1-part2-part3-2012-07-23-2012-07-23.csv |
> awk -F '-' '{ print $1"-"$2"-"$3".csv" }'
part1-part2-part3.csv
于 2012-07-24T13:11:47.993 に答える