我有一个包含要加密的字符串的文本文件。这些字符串由标签表示。
例子:
This is an <tag> example </tag>.
在 UNIX 中(使用 sed、bash 等常用工具)搜索所有出现并同时将其替换为加密值(这是标签内字符串的函数)的最佳方法是什么?
结果:
This is an <tag> <encrypted value here> </tag>.
提前致谢!
假设四个不清楚的条件:
在那种情况下,bash、sed、awk 都可能太麻烦了。你最好使用 Perl 或 Python。下面是一个算法:
好的,我几天前就找到了解决方案。我使用了 bash 和正则表达式。
这是我的做法:
#!/bin/bash
REGEX='^(.*<tag>)(.*)(<\tag>.*)$'
function process()
{
RESULT= #do processing of $1 here
}
while read line ; do
while [[ $line =~ "$REGEX" ]] ; do
process "${BASH_REMATCH[2]}"
line="${BASH_REMATCH[1]}$RESULT${BASH_REMATCH[3]}"
done
echo "$line" > "$OUTPUT_FILE"
done < "$FILE"