微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

执行 shell 脚本以检查每一行中特定位置的特定字符时出错,如果找到,则将其替换为“X”

如何解决执行 shell 脚本以检查每一行中特定位置的特定字符时出错,如果找到,则将其替换为“X”

我有这个 shell 脚本。在这个脚本中,我试图在每一行的特定位置找到一个字符,如果在该位置找到字符,则将其替换为“X”

filename = "/ray/test/raymond/test2.data"

if [ -r $filename ]; then
    echo " File Found..."
    echo " "
fi
cat $filename | 
while read line
  do

      var = `echo $line | awk '{print substr($0,422,1)}'`
      if [ "$var" = "D" ]; then

        `echo $line | awk '{start = substr ($0,1,421); end = substr ($0,423); print start "X" end}'` >> new_file

      else
        `echo $line` >> new_file
      fi
  done

但是我在执行脚本时遇到以下错误

/ray/test/raymond$ ksh ray2.sh ray2.sh[3]:文件名:未找到 找到文件...

ray2.sh[14]: b: 未找到

ray2.sh[14]: b: 未找到

ray2.sh[14]: b: 未找到

我不知道为什么。这是我在solaris 10中做的

解决方法

好吧,我将展示 2 个示例,希望它们可以提供一个想法。 示例 1

filename = "/ray/test/raymond/test2.data"
if [ -f "$filename" -a -r "$filename" ]; then
       while read -r line; do
              if [ "${line:421:1}" = 'D' ]; then
                     printf '%s%s%s\n' "${line:0:420}" 'X' "${line:422}" >> "$new_file"
              else
                     printf '%s\n' "$line" >> "$new_file"
              fi
       done < "$filename"
elif [ ! -f "$filename" ]; then
      echo 'ERROR: Not a file'
      return 1
elif [ ! -r "$filename" ]; then
     echo 'ERROR: Can not read the file'
     return 1
fi

示例 2

filename = "/ray/test/raymond/test2.data"
new_file="$filename"'_new.txt'
if [ -f "$filename" -a -r "$filename" ]; then
       output="$new_file" awk 'BEGIN { output=ENVIRON["output"] }
       {
               if(substr($0,422,1) == "D") {
                       $0=sprintf("%s%s%s",substr($0,1,421),"X",423))
               }
               print $0 >> output
       }' "$filename"
elif [ ! -f "$filename" ]; then
      echo 'ERROR: Not a file'
      return 1
elif [ ! -r "$filename" ]; then
     echo 'ERROR: Can not read the file'
     return 1
fi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?