这应该很简单,但我似乎无法正确使用语法。 我有一个包含以下行的文件: 主持'reg''PROC''admin''EIFEBJFFBOENGKGF'
主机是不加引号的,是唯一的常量。我想知道的其他值不知道确切的值。我想要做的是用单引号替换第一个单词,在这种情况下'reg'用新值替换,并保留原来的其余部分。我尝试了很多变化:
回声“主持'reg''NCO_PA''bsmadmin''EIFEBJFFBOENGKGF'”| sed“/ host / s / ['*'] /'newvalue'/”主持人'newvalue'reg''NCO_PA''bsmadmin''EIFEBJFFBOENGKGF'
回声“主持'reg''NCO_PA''bsmadmin''EIFEBJFFBOENGKGF'”| sed“/ host / s / [\'。\'] / \'newvalue \'/”主持人'newvalue'reg''NCO_PA''bsmadmin''EIFEBJFFBOENGKGF'
似乎我只是用它来替换第一个sigle引号。所以我的目标是改变
主持人'reg''PROC''admin''EIFEBJFFBOENGKGF'
到
主持人'newvalue''PROC''admin''EIFEBJFFBOENGKGF'
第二个字段的值将是主机名,因此它可能包含对主机名有效的任何字符,reg.test.com,reg-1.test.com,boo.radley.com等。被单引号包围。
提前致谢。
答案 0 :(得分:1)
echo "host 'reg' 'NCO_PA' 'bsmadmin' 'EIFEBJFFBOENGKGF'" | \
sed "s/^host\s*'[^']*'/host 'newval'/"
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed 's/'\''[^'\'']*'\''/'\''new value'\''/' file
或:
new_value='a new value'
sed 's/'\''[^'\'']*'\''/'\''"$new_value"'\''/' file