bash 替换 : 分隔文件中的单词



我有一个文件,它有:分离的数据,如

猫:狗:狮子猫:老鼠:老虎

我正在尝试用花药值替换狗,例如使用狐狸。我需要在不更改其他数据的情况下在文件内进行更改

三种可能的方法:

  1. awk -F: -v OFS=: '{for (i=1; i<=NF; i++) if ($i=="dog") $i="fox"} 1'
  2. perl -F: -lane 'print join ":" , map {$_ eq "dog" ? "fox" : $_} @F'
  3. sed -r 's/^|$/:/g; s/:dog:/:fox:/g; s/^:|:$//g;'
使用

sed 和 perl,使用 -i 就地编辑文件。
与awk:awk ... > tmpfile && mv tmpfile orig_file

您可以内联使用 sed:

sed -i.bak -r 's/(^|:)dog(:|$)/1fox2/g' file

或在 OSX 上:

sed -i.bak -E 's/(^|:)dog(:|$)/1fox2/g' file

-i标志更改将保存在文件本身中。

相关内容

  • 没有找到相关文章

最新更新