Я хочу удалить строку, которая соответствует указанному шаблону внутри тестового файла. Я хочу использовать команду sed/'lines для соответствия'/d внутри сценария оболочки linux. Это код:Команда Sed для удаления строки
#Define input parameters
SCRIPT_NAME=$(basename $0)
PATHFILE=$1
NAMEFILE1=$2
NAMEFILE2=$3
HEADEREXPRESSION=$4
#Define input file
INPUTFILE1=$PATHFILE$NAMEFILE1
INPUTFILE2=$PATHFILE$NAMEFILE2
TEMPFILE=${INPUTFILE2}_TMP
touch $TEMPFILE
echo $INPUTFILE2
echo $HEADEREXPRESSION
echo $TEMPFILE
#Remove header line from the second document
sed '/${HEADEREXPRESSION}/d' $INPUTFILE2 >> $TEMPFILE
#rm -f $INPUTFILE2
#echo $TEMPFILE >> $INPUTFILE1
В этом коде я хочу, чтобы удалить из первой строки в тестовый файл, который соответствует с выражением внутренней переменной HEADEREXPRESSION. Затем в результате будет помещена переменная tmp.
Это текстовый файл:
$ SYSDATE $ | PARENT_ELID | PARENT_ID_NUMBER | PARENT_REV | PARENT_LASTUPDATE_DATE | CHILD_ELID | CHILD_ID_NUMBER | CHILD_REV | CHILD_STATE | CHILD_LASTUPDATE_DATE | TSITEM | QUANTITY_DMS | OPTION_NAME |
2016/03/09 05: 00: 11 | AQJ2DJTH | 185273-13 | NC | 2016/03/09 01: 56: 14 | AQJ2DJTL | 185273-14 | NC | RELEASED | 2016/03/09 01:49 : 58 | 1 | 1 ||
2016/03/09 05: 00: 11 | AQJ2DJTL | 185273-14 | NC | 2016/03/09 01: 49: 58 | AZEUQ03Z0047AR | 185273-15 | A | RELEASED | 2003/01/15 09:46 : 18 | 1 | 1 ||
2016/03/09 05: 00: 11 | C3PK881C6A5JK0 | 201200-142 | M | 2016/03/09 03: 20: 26 | C3PK881BU135M0 | 201200-142EX | NC | RELEASED | 2016/03/09 03:21 : 26 | 1 | 1 ||
2016/03/09 05: 00: 11 | C3PK881C6A5JK0 | 201200-142 | M | 2016/03/09 03: 20: 26 | C3PK881BU2HVF0 | 201200-142RL | NC | RELEASED | 2014/07/23 09:35 : 14 | 1 | 1 | 1 |
2016/03/09 05: 00: 11 | BU9WPBTYLTYC60 | 3112535-02 | NC | 2016/03/09 04: 58: 35 | BU9WPBTYMATB60 | 3112865-02 | NC | CREATE | 2016/02/26 02:40 : 14 | 101 | 1 ||
2016/03/09 05: 00: 11 | BU9WPBTYLTYC60 | 3112535-02 | NC | 2016/03/09 04: 58: 35 | DN09DMYM1ROY70 | 3112892 | NC | RELEASED | 2011/05/13 21:09:16 | 102 | 1 ||
2016/03/09 05: 00: 11 | BU9WPBTYLTYC60 | 3112535-02 | NC | 2016/03/09 04: 58: 35 | DN09DMYM2CRJP0 | 3112897 | D2 | RELEASED | 2011/07/24 13:41:16 | 103 | 1 ||
2016/03/09 05: 00: 11 | BU9WPBTYLTYC60 | 3112535-02 | NC | 2016/03/09 04: 58: 35 | DN09DMYL210V60 | 1900169-1205 | NC | RELEASED | 2011/06/02 08:14 : 33 | 104 | 2 ||
Я хочу, чтобы удалить первую строку, используя выражение картины, как:
$SYSDATE$|PARENT_ELID|PARENT_ID_NUMBER|PARENT_REV|PARENT_LASTUPDATE_DATE|CHILD_ELID|CHILD_ID_NUMBER|CHILD_REV|CHILD_STATE|CHILD_LASTUPDATE_DATE|TSITEM|QUANTITY_DMS|OPTION_NAME|
Я призываю этот сценарий с помощью этой командной строки:
./delete_headeer.sh /wmextdata/scripts/DEV/primavera/SS_IPP_SOSLOAD/ SSP6_LINKS.TXT-20160309-000341 SSP6_LINKS.TXT-20160309_121000 "\$SYSDATE$|PARENT_ELID|PARENT_ID_NUMBER|PARENT_REV|PARENT_LASTUPDATE_DATE|CHILD_ELID|CHILD_ID_NUMBER|CHILD_REV|CHILD_STATE|CHILD_LASTUPDATE_DATE|TSITEM|QUANTITY_DMS|OPTION_NAME|"
Однако первые строки, которые соответствуют с шаблон не будет удаляться в выходном файле. Как я могу исправить проблему?
переформатирования кода для лучшей читаемости – maxhb