2016-06-27 111 views
-1

我尝试使用cut命令从文件中提取11个包含在标记中的字符(默认值)。如果字符包含双倍空间,则cut命令会为输出提供单个间距。使用CUT命令时包含空格

我上看起来那样工作文件:

blablaFirst lastblabla 

命令我用的是:

cut -c7-18 file.txt 

的非期望的结果是(仅一个空间代替两个之间第一个 a第二最后):

First last 

下面是主要代码:

c_line="file.txt" 
targetfile="result.txt" 
var1=0 
while read c_line 
do 
var1=`grep -c "IIT Chennai" $c_line` 
echo $var1 >> $targetfile 
if [ $var1 -ge 1 ] 
then 
val=`cut -c7-18 $c_line` 
echo $var >> $targetfile 

fi 
done<${c_line} 

我宁愿继续使用切割

你知道什么是切的问题?

+3

也许你有一个选项卡没有空格?我用空格试了一下,它能正确工作(保留空格):'First lastb' –

回答

0

我假设你的脚本的这一部分是一个错字:

val=`cut -c7-18 $c_line` 
echo $var >> $targetfile 
#  ^should be $val 

所以问题是,你正在使用$val,当你应该使用"$val"

当您展开不带引号的变量,文字分裂发生,所以echo看到两个参数:

echo 'First' 'last' 

这些参数打印出来,由一个空格隔开。

+0

它工作正常,非常感谢! – technopathe

相关问题