gpt4 book ai didi

linux - 需要有关如何从 bash 脚本中调用 .sed 文件的帮助

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:17 25 4
gpt4 key购买 nike

我有一系列 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com