我有一个文件,它有:分离的数据,如
猫:狗:狮子猫:老鼠:老虎
我正在尝试用花药值替换狗,例如使用狐狸。我需要在不更改其他数据的情况下在文件内进行更改
三种可能的方法:
-
awk -F: -v OFS=: '{for (i=1; i<=NF; i++) if ($i=="dog") $i="fox"} 1'
-
perl -F: -lane 'print join ":" , map {$_ eq "dog" ? "fox" : $_} @F'
-
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
标志更改将保存在文件本身中。