AS à¦à§à§±à¦¬à¦¿à¦à§à¦à¦¾à¦¨à¦¬à¦¿à¦à¦¾à¦
AS à¦à§à¦¤à¦¨à¦¾à¦¦à¦¾à¦¸
AS বà§à¦à¦²à§à¦ªà¦¿à¦
AS jibvigyanvibhag
AS chetanadas
AS baikalpik
我的命令是:
echo "$0" | indictrans -s asm -t eng --ml --build-lookup
所以我做的就像
awk -v OFS="\t" '{ print "echo "$2" | indictrans -s asm -t eng --ml --build-lookup" | "/bin/sh"}' in.txt > out.txt
但这不会保留列,它只是像这样打印出第一列
jibvigyanvibhag
chetanadas
baikalpik
awk -v OFS="\t" '{ "echo "$2" | indictrans -s asm -t eng --ml --build-lookup" | getline RES; print $1,$2,RES}' in.txt > out.txt
会打印出来的
AS à¦à§à§±à¦¬à¦¿à¦à§à¦à¦¾à¦¨à¦¬à¦¿à¦à¦¾à¦ jibvigyanvibhag
AS à¦à§à¦¤à¦¨à¦¾à¦¦à¦¾à¦¸ chetanadas
AS বà§à¦à¦²à§à¦ªà¦¿à¦ baikalpik
现在我想把命令参数化,但是这里的转义看起来很奇怪:
"echo "$0" | indictrans -s $SOURCE -t $TARGET --ml --build-lookup"
但它不起作用。如何正确执行此命令并转义参数?
这是一个局部的解决方案,我的灵感来自于建议的解决方案
#!/bin/bash
SOURCE=asm
TARGET=eng
IN=$2
OUT=$3
awk -v OFS="\t" '{
CMD = "echo "$2" | indictrans -s asm -t eng --ml --build-lookup"
CMD | getline RES
print $1,RES
close(CMD)
}' $IN > $OUT
我仍然无法摆脱变量,似乎我无法定义
-v
像往常一样
awk -v OFS="\t" -v source=$SOURCE -v target=$TARGET '{
CMD = "echo "$2" | indictrans -s source -t target --ml --build-lookup"
...
这个
indictrans
stdin
写信给
stdout
这样:
for line in ifp:
tline = trn.convert(line)
ofp.write(tline)
# close files
ifp.close()
ofp.close()
ifp = codecs.getreader('utf8')(sys.stdin)
ofp = codecs.getwriter('utf8')(sys.stdout)
所以需要一个
line
从
trn.convert
并将结果写入
标准
没有任何平行性。
由于这个原因(在多行输入方面缺乏并行性),性能受到数据集大小(行数)的限制。
here
. 示例如下
KN à²à²à³à²¯à²¤à³ à²à³à²·à³à²®à²¾à²à²¿à²µà³à²¦à³à²§à²¿ ಸà²à²¸à³à²¥à³ ವಿà²à²¯à²ªà³à²°
KN ಹà³à²°à²à²¿à²¨ ಸà²à²ªà²°à³à²à²à²³à³
KN ಮà²à³à²à²³ ಸಾಹಿತà³à²¯ ಮತà³à²¤à³ ಸಾà²à²¸à³à²à³à²°à³à²¤à²¿à² à²à³à²·à³à²¤à³à²°à²¦à²²à³à²²à²¿ ಸà³à²µà³ ಸಲà³à²²à²¿à²¸à³à²¤à³à²¤à²¿à²°à³à²µ ಸà²à²¸à³à² ೠಮà²à³à²à²³ ಲà³à²
而基于最后接受答案的示例脚本是
here