Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/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
String 使用Sed获取第n个字符 我正在玩《最终幻想7》,我在SHIRA-HQ的图书馆里,你必须写下第n个字母——减去空间,其中NTH是书名前面的数字——对于每一本不属于当前房间的书,其中有4本。p>_String_Sed - Fatal编程技术网

String 使用Sed获取第n个字符 我正在玩《最终幻想7》,我在SHIRA-HQ的图书馆里,你必须写下第n个字母——减去空间,其中NTH是书名前面的数字——对于每一本不属于当前房间的书,其中有4本。p>

String 使用Sed获取第n个字符 我正在玩《最终幻想7》,我在SHIRA-HQ的图书馆里,你必须写下第n个字母——减去空间,其中NTH是书名前面的数字——对于每一本不属于当前房间的书,其中有4本。p>,string,sed,String,Sed,我需要一个sed脚本或其他命令行来打印书的标题,并在书名中获得第n个字母。我想出了方法: echo "The Ancients in History" | sed -r 's/\s//g ; s/^(.{13})(.).*$/\2/' => H 注意Sed从0开始计数,而不是1,因此如果您想要第14个字母,请索要第13个字母 下面是一个shell脚本: #!/bin/sh if [[ -n "$1" ]]; then # string if [[ -n "$2" ]];

我需要一个sed脚本或其他命令行来打印书的标题,并在书名中获得第n个字母。

我想出了方法:

echo "The Ancients in History" | sed -r 's/\s//g ; s/^(.{13})(.).*$/\2/'

=> H
注意
Sed从0开始计数,而不是1,因此如果您想要第14个字母,请索要第13个字母

下面是一个shell脚本:

#!/bin/sh

if [[ -n "$1" ]]; then # string 

    if [[ -n "$2" ]]; then # Nth 

        echo "Getting character" $[$2 - 1]

        export Nth=$[$2 - 1]

        echo "$1" | sed -r "s/\s//g ; s/^(.{$Nth})(.).*$/\2/";
    fi
fi

你不需要
sed
。您可以使用
bash
字符串替换:

$ book="The Ancients in History"
$ book="${book// /}"   # Do global substition to remove spaces
$ echo "${book:13:1}"  # Start at position 13 indexed at 0 and print 1 character
H

也许你的意思是sed删除了前13个字母,下一个字母是第14个。@potong:是的,我宁愿使用打印函数thingy,但我想不出如何让它实现我想要的功能……有没有办法不将字符串存储到变量中,比如
“历史上的古人”:13:1