作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一系列 sed 命令来编辑文件。 sed 文件名为 cmdfile.sed。当我运行“sed -f cmdfile.sed redactme.txt”时,一切都按预期工作。我需要创建一个名为 assign2.bash 的 bash 文件,当我在命令行中键入一个文件名作为 bash 文件的参数时,它只调用 .sed 文件。
我创建了一个名为“assign2.bash”的 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: `}'
最佳答案
在这里,你使用了错误的解释器:
sh cmdfile.sed
你需要使用sed
:
sed -f cmdfile.sed
不要忘记为其提供一些输入。
更简单的方法是使 sed 脚本可执行,并在开头给它一个 shebang 行:
#!/bin/sed -f
然后你可以直接执行它——不需要shell脚本。
关于linux - 需要有关如何从 bash 脚本中调用 .sed 文件的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151729/
我是一名优秀的程序员,十分优秀!