考虑以下文件:
Name Id department
some 13 IT
hey 12 IT
我真正想做的是从用户那里读取名称并编辑其特定的 ID 或部门。我正在尝试用来sed
执行此操作但是无法找到正确的正则表达式来IT
仅在嘿的行中进行替换
我在正则表达式领域相对较新,除了很少的基础知识之外,不知道太多
答案1
在 sed 中,使用正则表达式作为命令前缀只会编辑与该正则表达式匹配的行。
sed -r '/^hey\s/s/(\s)IT$/\1whatever/'
答案2
要按模式查找特定行sed
并将 foo 替换为 bar,请执行以下操作:
sed '/pattern/s/foo/bar/'
由于名称似乎是您案例中的第一列,您甚至可以将^
“行开头”的 - 标记添加到您的模式中。
答案3
您应该使用awk
而不是sed
用于您的任务。
如果文件用制表符分隔:
awk -F$'\t' '$1=="hey"{$3="HR"}{OFS=FS;print}' file
如果它是空格分隔的:
awk '$1=="hey"{$3="HR"}1' file | column -t
column -t
是可选的以获得良好的输出。