替换 shell 中已知分隔符之间特定位置的字符串
Replacing string in a specific position between known delimiters in shell
我有一个文件以这种格式存储数据
ID;Name;Surname;Country
而且我需要能够找到并替换特定的数据片段,只要知道 ID 和使用“;”的数据位置作为分隔符。
有点像
的结果
grep -n "ID" [file] | cut -d ";" -f [position]
但是替换为用户给定的字符串而不是显示
我想我需要使用 sed,但我发现没有任何效果。
编辑:用户会从菜单中选择要修改的内容并提供 ID,然后系统会提示他们键入替换字符串并了解存储数据的结构(ID/Name/Surname/Country) 文本文件中的字符串将被相应地替换。
使用 awk:
echo 'ID;Data1;Data2;Data3' | awk -v id="ID" -v col=3 -v repl="foo" -F';' 'BEGIN{OFS=";";} ==id {$col=repl;}1'
输出:
ID;Data1;foo;Data3
我有一个文件以这种格式存储数据
ID;Name;Surname;Country
而且我需要能够找到并替换特定的数据片段,只要知道 ID 和使用“;”的数据位置作为分隔符。
有点像
的结果grep -n "ID" [file] | cut -d ";" -f [position]
但是替换为用户给定的字符串而不是显示
我想我需要使用 sed,但我发现没有任何效果。
编辑:用户会从菜单中选择要修改的内容并提供 ID,然后系统会提示他们键入替换字符串并了解存储数据的结构(ID/Name/Surname/Country) 文本文件中的字符串将被相应地替换。
使用 awk:
echo 'ID;Data1;Data2;Data3' | awk -v id="ID" -v col=3 -v repl="foo" -F';' 'BEGIN{OFS=";";} ==id {$col=repl;}1'
输出:
ID;Data1;foo;Data3