Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 猪拉丁标点符号_Bash_Shell_Loops_If Statement_Sed - Fatal编程技术网

Bash 猪拉丁标点符号

Bash 猪拉丁标点符号,bash,shell,loops,if-statement,sed,Bash,Shell,Loops,If Statement,Sed,我有一个文件,它接收另一个文件的文本并将其转换为pig拉丁语,它工作得很好,除了以下单词中的标点符号: what'say变成了atwhay'say,而不是我想要的东西 at'swhay将成为什么 代码: echo$( 一美元一只猫` 做 如果[$i=~^[B-DF-HJ-NP-TV-XZ]] 然后 echo$i|sed-e的s/\(\\)/\U\2\L\3\L\1ay/g' elif[$i=~^[b-df-hj-np-tv-xz]] 然后 echo$i| sed-e的s/\(\\)/\2\1ay

我有一个文件,它接收另一个文件的文本并将其转换为pig拉丁语,它工作得很好,除了以下单词中的标点符号:

what'say
变成了
atwhay'say
,而不是我想要的东西

at'swhay将成为什么

代码:

echo$(
一美元一只猫`
做
如果[$i=~^[B-DF-HJ-NP-TV-XZ]]
然后
echo$i|sed-e的s/\(\\)/\U\2\L\3\L\1ay/g'
elif[$i=~^[b-df-hj-np-tv-xz]]
然后
echo$i| sed-e的s/\(\\)/\2\1ay/g'
其他的
echo$i|sed-e's/\(\\)/\1yay/g'
fi
完成
)

感谢所有能够帮助我解决这个标点错误的人

[[:alpha:][]*
更改为
[:alpha:]['\'''''''''.*
--是的,在单引号字符串中包含单引号是很难看的。不必要的外部
echo
有什么用?外部
echo
是为了防止文本文件在返回分隔的列表中输出,因为我想保持它的原始格式尽可能好,我可以。我想不出更好的办法了。非常感谢。更改成功了,我也可以将其应用到其他标点符号上。将
[[:alpha:][]*
更改为
[[:alpha:]['\''''''']*
--是的,在单引号字符串中包含单引号是很难看的。不必要的外部
echo
是怎么回事?外部
echo
是为了防止文本文件以返回分隔的列表输出,因为我希望尽可能保持其原始格式。我想不出更好的办法了。非常感谢。这个改变奏效了,我也能把它应用到其他标点符号上。
echo $(
for i in `cat $1`
do
    if [[ $i =~ ^[B-DF-HJ-NP-TV-XZ] ]]
    then
        echo $i | sed -e 's/\(\<[B-DF-HJ-NP-TV-XZ]\+\)\([[:alpha:]]\)\([[:alpha:]]*\>\)/\U\2\L\3\L\1ay/g'
    elif [[ $i =~ ^[b-df-hj-np-tv-xz] ]]
    then    
        echo $i | sed -e 's/\(\<[b-df-hj-np-tv-xz]\+\)\([[:alpha:]]*\>\)/\2\1ay/g'
    else
        echo $i | sed -e 's/\(\<[[:alpha:]]*\>\)/\1yay/g'
    fi
done
)