我有以下字符串:
NA.|NA.|the NA. company|theNAcompany|2.7737|1.4874|NA|NA|NA
在OSX中使用sed命令,我需要替换字符之间的所有NA有,比方说,FOO。只有|之间的字符仅包含NA的替换。因此,正确的结果将是
NA.|NA.|the NA. company|theNAcompany|2.7737|1.4874|FOO|FOO|FOO
其中“NA。”单独留下。
到目前为止,我已经尝试过:
sed -e 's/[?<=\|](NA)[?=\|]/FOO/g'
sed 's/\|NA\|/\|FOO\|/g'
但没有运气。
答案 0 :(得分:1)
sed
没有前瞻,更不用说了。使用更强大的工具。
echo "NA.|NA.|the NA. company|theNAcompany|2.7737|1.4874|NA|NA|NA" |\
perl -pne "s/(\||^)NA(?=\||$)/\1FOO/g"
或
echo "NA.|NA.|the NA. company|theNAcompany|2.7737|1.4874|NA|NA|NA" |\
awk 'BEGIN{FS=OFS="|"}{for(i=1;i<=NF;i++)if($i=="NA")$i="FOO";print}'