我正在寻找与文件中的模式匹配的bash命令,并用脚本询问用户的输入替换该行的剩余部分。在bash脚本中是否有类似的东西?
例如:我有一个文件,它是另一个程序的输入文件。我希望用bash脚本更改它的部分内容。
karyotype ='red.txt'
chromosomes_units = 1000000
<ideogram>
<spacing>
default = 0.001r
</spacing>
radius = 0.9r
thickness = 20p
fill = yes
那么,我是否有可能搜索核型=&#39;使用grep / sed命令并根据用户提示更改行的剩余部分。例如,我希望将red.txt更改为用户提供的任何文件名。
答案 0 :(得分:2)
您可以使用sed
:
# user input string
str='foo.bar'
# use sed for replacement
sed -i.bak "s~^\( *karyotype *= *\).*$~\1'$str'~" input
# check results
cat input
karyotype ='foo.bar'
chromosomes_units = 1000000
<ideogram>
<spacing>
default = 0.001r
</spacing>
radius = 0.9r
thickness = 20p
fill = yes
或者,如果您事先不知道awk
的价值,则可以使用此更安全的str
:
awk -v str="'a&b'" 'BEGIN{FS=OFS="="} $1=="karyotype "{$2=str} 1' file