Unix dat 文件读取脚本



我有一个包含 1000 行的 dat 文件,需要从每行中删除几个字符,例如:-c900-903。如果提取的字符长度不是空格,则需要将整行打印到新的dat文件中。如何在 unix 脚本中执行此操作?

我试过这个

while IFS=read -r line; do
characters= cut -c900-903
if [ -n $characters ]
then
echo "$line"
fi
done < $inputfile > $output file.

IFS=之后,你需要一个空格。
当你给变量characters赋值时,你应该避免空格。
使用 characters="cut -c900-903",您将为字符分配文本,而不是子命令的结果。为此使用$(command)
cut命令将需要一些输入才能剪切,请使用echo "${line}"
空格不是空的,-n $characters(应该-n "$characters"避免错误,因为 var 是空的)在看到空格后会很高兴。

while IFS= read -r line; do
   characters=$(echo "${line}"| cut -c900-903)
   if [ "${characters}" != "    " ]
   then
      echo "${line}"
   fi
done < $inputfile > $output_file

对于大文件,由于每个循环中需要加载子命令,这将变得非常慢。您可以尝试其他工具,例如 awkgrepsed 。是否为您执行以下操作:

grep -vE "^.{899} {4}" ${inputfile}

最新更新