我正在编写一个shell脚本,它从gettext .po文件中输出所有未翻译的字符串,并且卡在一个简单的东西上。在命令链的末尾,我得到了这样的输出:
"less than a minute left"
"%d minutes left"
"logged in as <a href=\"%s\">%s</a>"
"more"
我不知道如何在没有引号的情况下回应这些行,如下所示:
less than a minute left
%d minutes left
logged in as <a href="%s">%s</a>
more
注意,引号用在短语中,所以我不能用sed删除它们。我希望我知道一个不引用这种命令的命令。比
更注射安全的东西 awk '{ print "echo ", $0}' | sh
以防万一这是我迄今为止的工作演示:
wget https://raw.github.com/vslavik/poedit/master/locales/wa.po
msgattrib --untranslated --no-wrap wa.po | grep msgid | sed "s/msgid[^ ]*//"
答案 0 :(得分:1)
我想这应该没问题:
msgattrib --untranslated --no-wrap wa.po | grep msgid | sed "s/msgid[^ ]*//"|sed -e 's/^\s"//' -e 's/"$//'
修改强>
这次?
msgattrib --untranslated --no-wrap wa.po | grep msgid | sed "s/msgid[^ ]*//"\
|sed -e 's/^\s"//' -e 's/"$//' -e's/\\"/"/g'
答案 1 :(得分:1)
在您的sed命令中添加's/^\s"\|"$//g'
和's/\\"/"/g'
应该删除前导和尾随"
,并将所有\"
转换为"
。
完整命令:
msgattrib --untranslated --no-wrap wa.po | grep msgid | sed 's/msgid[^ ]*//; s/^\s"\|"$//g; s/\\"/"/g'