bash - 如果存在单词,如何替换世界,否则使用 sed 在行尾附加一个单词
问题描述
如果存在单词,如何替换世界,否则使用 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
. _
推荐阅读
- php - 如何在另一个 php 标签和 echo 中实现一个 php 标签和 echo?
- javascript - 添加一个按钮来选择下拉菜单
- java - 为什么 SimpleDateFormat setTimeZone 不会为无效时区抛出错误
- visual-studio - Visual Studio:“没有测试与给定的测试用例过滤器匹配”,但仅在从顶层运行时?
- macos - 从 VS Code 在模拟器上同步应用程序非常慢
- node.js - 在nodeJS应用程序中查询mongoDB返回值void?
- python - Python3:打印带有从非 ASCII 字符(unicode_escape)的文本文件中读取的表情符号的文本
- spring - Spring security:如何使用自定义代码停止链?
- go - 我如何提议更改 Go 格式?
- r - 如何在 R 中创建检验能力图?