remove date

sed 正規表現で日付形式の文字列を削除するbash

以下のような形式の文字列を変更対象にしたい。
201912ABCD
20191231ABCD
20191231105959ABCD


#!/bin/bash
##############################################################################
# name remove_date.sh
##############################################################################
filename=$1        # FileName
if [[ $# -ne 1 ]]; then
    echo "syntax $0 filename"
    echo "e.g. $0 abc_2020_20190530_010_20190610.csv"
    echo
    exit 8
fi
# filename="WSD_2020_ABC_20200510.txt"
echo "before: $filename"
filename_removed=$(echo $filename | sed -e "s/[12][90][0-9][0-9][0-9][0-9][0-9]*//g")
echo "after:  $filename_removed"
exit 0

sed日付削除処理を関数に埋め込む

#!/bin/bash
##############################################################################
# name removeDate_bg_opmeta_xml.sh
##############################################################################
filename=$1        # FileName
if [[ $# -ne 1 ]]; then
    echo "syntax $0 filename"
    echo "e.g. $0 dstage1.testjob.0.1.75910597.xml.bak"
    echo
    exit 8
fi
out_filename="$filename.out"
cp /dev/null $out_filename

# removeDate function
removeDate() {
s="$1"
rcStr=$(echo $s | sed -e "s/[12][90][0-9][0-9][0-9][0-9][0-9]*//g")
echo "$rcStr"
}

while read line
do
str=$line
if [[ ! -z "$(echo $line | grep 'Class=\"DataSchema\" SubClass=\"File\"')" ]] \
 || [[ ! -z "$(echo $line | grep 'Class=\"DataCollection\" SubClass=\"File\"')" ]]; then
str=`removeDate "$line"`
fi
echo "$str" >>$out_filename
done<$filename
exit 0

コメント

人気の投稿