Нужна помощь о том, как вызвать файл .sed из сценария bash - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть серия команд sed для редактирования файла.Файл sed называется cmdfile.sed.Все работает, как и ожидалось, когда я запускаю "sed -f cmdfile.sed redactme.txt".Мне нужно создать файл bash с именем assign2.bash, который просто вызывает файл .sed, когда я вписываю имя файла в командную строку в качестве аргумента файла bash.

Я создал файл bash с именем "assign2.bash".Это то, что у меня есть до сих пор:

#! /bin/bash
# assign2

(
while [true]{

do 

sh cmdfile.sed
}
done
)

А это cmdfile.sed:

#cmdfile
/^.*..DL [0-9]/ s/[0-9]/X/g   #redacts sensitive information in the file
/^.*..DL XXXXXX*/ s/X//18
/^.*..DL XXXXXX*/ s/X//17
/^.*..DL XXXXXX*/ s/X//16
/^.*..DL XXXXXX*/ s/X//15
/^.*..DL XXXXXX*/ s/X//14
/^.*..DL XXXXXX*/ s/X//13
/^.*..DL XXXXXX*/ s/X//12
/^.*..DL XXXXXX*/ s/X//11
/^.*..DL XXXXXX*/ s/X//10
/^.*..DL XXXXXX*/ s/X//9
/^.*..DL XXXXXX*/ s/X//8
/^.*..DL XXXXXX*/ s/X//7
/^.*TXDL XXXXX/ s/X{5}/XXXXXX/g
/5[0-9]{3}-[0-9]{4}-[0-9]{4}-[0-9]{4}/ s/([0-9]{4})-([0-9]{4})-([0-9]{4})-([0-9]{4})/MC-\4/g
/6[0-9]{3}-[0-9]{4}-[0-9]{4}-[0-9]{4}/ s/([0-9]{4})-([0-9]{4})-([0-9]{4})-([0-9]{4})/DISC-\4/g
/4[0-9]{15}/ s/([0-9]{12})([0-9]{4})/VISA-\2/g
/37[0-9]{2}-[0-9]{6}-[0-9]{5}/ s/([0-9]{4})-([0-9]{6})-([0-9]{1})([0-9]{4})/AMEX-\4/g
/34[0-9]{2}-[0-9]{6}-[0-9]{5}/ s/([0-9]{4})-([0-9]{6})-([0-9]{1})([0-9]{4})/AMEX-\4/g
/TX.[A-Z]{2}..[0-9]{3}.*/ s/TX.[A-Z]{2}..[0-9]{3}./TX XXXXXX/g
/TX.[A-Z0-9]{2}..[A-Z0-9]{2}.*/ s/TX.[A-Z0-9]{2}..[A-Z0-9]{2}./TX XXXXXX/g

s/<orgname>/City of Gainsville, Florida/g


It should redact the information in the .txt file in the same as it does when I run sed with the -f option in the terminal. However, when I run ./assign2.bash redactme.txt , it returns the following error:

./assign2.bash: line 10: syntax error near unexpected token `}'
./assign2.bash: line 10: `}'
...