[英]How to replace a world if word is exist otherwise append a word in the end of line using sed
如果单词存在,如何替换世界,否则 append 使用 sed 示例在行尾添加一个单词:
案例1:如果存在则替换之前yzz:
my name is xyz
my father name is yzz
i live at wert
如果 yzz 存在则替换后
my name is xyz
my father name is yzzsst
i live at wert
情况2:如果不存在,则在替换之前 yzz
my name is xyz
my father name is
i live at wert
更换后
my name is xyz
my father name is yzzsst
i live at wert
我宁愿用awk
你可以这样做:
awk '/father name is WHATEVER/ {gsub(/WHATEVER/,"REPLACEMENT"); print ; next }
/father name is$/ {print $0 " REPLACEMENT" ; next }
{print}' INPUTFILE
第一个条件检查名称是否存在,替换并打印,并跳过此行的更多操作。 下一个条件检查该行是否以name is
结尾,如果是则打印它并附加REPLACEMENT
。 最后每隔一行被打印。
使用(GNU) sed
,您可以尝试以下操作:
sed -n '/my father/!p; /my father/s/\( NAME$\)\|\($\)/ REPLACEDNAME/p'
但这只是一个快速的“hack”:默认情况下不打印任何东西( -n
),但如果该行与my father
不匹配,则打印它,否则检查NAME
是否存在于 and of 行并替换它或者如果它不存在附加REPLACEDNAME
。
您可以使用适用于这两种情况的awk
:
awk 'NR==2{sub(/( *yzz *)?$/, " yzzst")} 1' file
你可以这样做:
$ echo "$response" | sed -E "3 s/(.*)( [a-zA-Z]+ *$)/\1 DUDETRUSTME/g"
my name is xyz
my father name is DUDETRUSTME
i live at wert
我假设您要替换第三行,但您可以将 3 更改为您喜欢的任何数字,甚至是一个范围。 我还假设您的目标词(在本例中为yzz )不是固定的,但它可能是任何东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.