Bash脚本替换一个单词,后跟冒号、空格和数字
我想在一个文件中找到修订号-将有一个用户输入的新修订号,这个新版本将替换旧版本。 例如: 如果用户输入为67,则应替换为67,如下所示Bash脚本替换一个单词,后跟冒号、空格和数字,bash,shell,Bash,Shell,我想在一个文件中找到修订号-将有一个用户输入的新修订号,这个新版本将替换旧版本。 例如: 如果用户输入为67,则应替换为67,如下所示 revision: 67 我想要一个bash脚本,它可以找到旧的数字并用新的数字替换。新修订号的值将存储在变量修订号中 到目前为止,我得到的是: #!/bin/bash echo “Insert the new revision number: “ read revision_number sed -e ^revision: \d+$/^revisio
revision: 67
我想要一个bash脚本,它可以找到旧的数字并用新的数字替换。新修订号的值将存储在变量修订号中
到目前为止,我得到的是:
#!/bin/bash
echo “Insert the new revision number: “
read revision_number
sed -e ^revision: \d+$/^revision: $revision_number$ *.txt
像这样:
sed "s/^revision:.*/revision: ${input}/" file
像这样:
sed "s/^revision:.*/revision: ${input}/" file
使用sed
要使用sed就地更改文件,请使用:
sed -i -E "s/^revision: [[:digit:]]+$/revision: $revision_number/" *.txt
注意事项:
[0-9]
,因为它是unicode安全的+
。使用-E
获取扩展正则表达式-i
告诉sed将文件更改到位$revision\u number
视为数据,而是将其视为命令的一部分这是危险的。恶意值$revision\u number
可能导致文件被删除或覆盖-E
替换为-r
:
sed -i -r "s/^revision: [[:digit:]]+$/revision: $revision_number/" *.txt
对于BSD/OSX sed,将-i
替换为-i'
:
gawk -i inplace -v r="$revision_number" '{sub(/^revision: [[:digit:]]+/, "revision: " r)} 1' *.txt
注意事项:
-i inplace
$revision\u number
视为数据而不是代码,因此使用此方法比sed方法安全得多sed -i -E "s/^revision: [[:digit:]]+$/revision: $revision_number/" *.txt
注意事项:
[0-9]
,因为它是unicode安全的+
。使用-E
获取扩展正则表达式-i
告诉sed将文件更改到位$revision\u number
视为数据,而是将其视为命令的一部分这是危险的。恶意值$revision\u number
可能导致文件被删除或覆盖-E
替换为-r
:
sed -i -r "s/^revision: [[:digit:]]+$/revision: $revision_number/" *.txt
对于BSD/OSX sed,将-i
替换为-i'
:
gawk -i inplace -v r="$revision_number" '{sub(/^revision: [[:digit:]]+/, "revision: " r)} 1' *.txt
注意事项:
-i inplace
$revision\u number
视为数据而不是代码,因此使用此方法比sed方法安全得多您的脚本在做什么,您不满意?通过该脚本,我得到了以下响应:“sed:-e expression#1,char 1:unknown command:`^'”sed中的regexp需要用斜杠引入。另外:您忘记引用sed表达式,因此sed只将
^revision:
视为-e
的参数。您的脚本做了哪些您不满意的事情?对于该脚本,我得到了以下响应“sed:-e expression#1,char 1:未知命令:`^')。sed中的regexp需要用斜杠引入。另外:您忘记引用sed表达式,因此sed只将^revision:
作为-e
的参数;sed-i“s/^revision:.*/revision:${revision_number}/.”/*.txtPlus 1,因为它比我快2分钟;sed-i“s/^revision:.*/revision:${revision\u number}/.”/*.txtPlus 1,因为它比我快2分钟。另外还有一个是非常详细的解释!加上一个非常详细的解释!再加一顶帽子!:)再加一顶帽子!:)