我正在尝试编写一个脚本,它将人名作为参数并使用其名称创建一个文件夹。但在文件夹名称中,非ASCII字符和空格有时会出现问题,所以我想删除它们或将它们更改为ASCII字符。 我可以删除名字和姓氏之间的空白,但我无法弄清楚我该如何更改?s,ç-> c,?g,?i,?o> o。将所有非ascii字符更改为ascii Bash脚本
这里是我的代码:
#!/bin/bash
ARRAY=("[email protected]")
ELEMENTS=${#ARRAY[@]}
for ((i=0;i<$ELEMENTS;i++))
do #C-like for loop syntax
echo ${ARRAY[$i]} | grep "[^ ]*\b" | tr -d ' '
done
我跑我的剧本一样,myscript.sh“Çişil索伊 '杰姆Dalgıç'
应该改变的参数,如:CisilAksoy CemDalgic
在此先感谢
编辑: 我发现这个解决方案,这看起来不漂亮,但它的工作原理。
sed 's/ş/s/gI; s/ç/c/gI; s/ü/u/gI; s/ö/o/gI; s/ı/i/gI;'
EDIT2:解决
#!/bin/bash
ARRAY=("[email protected]")
ELEMENTS=${#ARRAY[@]}
for ((i=0;i<$ELEMENTS;i++))
do #C-like for loop syntax
v=$(echo ${ARRAY[$i]} | grep "[^ ]*\b" | tr -d ' ' | sed 's/ş/s/gI; s/ç/c/gI; s/ü/u/gI; s/ö/o/gI; s/ı/i/gI;')
mkdir $v
done
其实它并没有失败,但我想改变这一切字符在有效的ASCII的。字符集是我需要改变的地方。 (s-> s,ç-> c,ı-> i,> g,ö-> o,ü-> u) –
sed's/c/c/g; s /ş/ s/g'''<<<'Çişil'我认为这不是一个好方法,但我的工作是这样的 –