如何使用shell脚本中的read命令从特定行读取一行

时间:2015-04-15 15:06:43

标签: shell

我在文件text_file1.txt

中有以下数据
subject=/C=US/O=XXX/OU=QA/OU1=12345/OU2=APP/CN=03032015_JKS_2211_Unix_CLB

我想根据要求阅读字符。 例如:

  1. 如果我想从字符10到18读取,那么它应该只显示=US/O=XX
  2. 我怎样才能做到这一点? 我尝试使用以下代码,但它正在打印整行:

    n=()
    i=0
    while read -r -n1 n[i]; do
        echo "Character $i is ${n[i]}"
        ((++i))
    done < text_file1.txt
    

2 个答案:

答案 0 :(得分:1)

使用更好的工具,例如cut

cut -c 10-18 text_file1.txt

read的目的是从输入中读取并将结果保留在变量中。就像您需要用户输入的输入一样。

答案 1 :(得分:0)

与shell脚本中的大多数内容一样,有许多不同的方法可以做到这一点。例如,您可以使用awksed执行此操作。

更简单的方法是使用substring或cut,正如其他答案所暗示的那样。

选择哪种方法取决于您。无论你最喜欢什么,或者你的其他部分都能更好地适应。