我有一个包含1000行的dat文件,需要从每行中删除几个字符ex:-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.
答案 0 :(得分:0)
stream-properties
之后你需要一个空格
为变量gstreamer
指定值时,应避免使用空格
使用IFS=
,您将为字符分配文本,而不是子命令的结果。请使用characters
。
characters="cut -c900-903"
命令需要输入一些输入,使用$(command)
空格不是空的,cut
(本来应该echo "${line}"
避免错误,变量是空的)在看到空格后会很开心。
-n $characters
对于大文件,由于需要在每个循环中加载子命令,因此这将变得非常慢。您可以尝试其他工具,例如-n "$characters"
,while IFS= read -r line; do
characters=$(echo "${line}"| cut -c900-903)
if [ "${characters}" != " " ]
then
echo "${line}"
fi
done < $inputfile > $output_file
或awk
。
以下是否适用于您:
grep