5

我正在玩《最终幻想 7》,我在你在神罗总部图书馆的那部分,你必须写下第 N 个字母——减去空格,其中 Nth 是数字书名的前面——每本似乎不属于当前房间的书,其中有 4 本书。

我需要一个 sed 脚本或其他命令行来打印书名并获取书名中的Nth字母。

4

2 回答 2

7

你不需要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
于 2013-07-26T05:13:06.590 回答
1

我想出了如何做到这一点:

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
于 2013-07-26T04:47:03.633 回答