cat train.txt | awk '$1<163481 {print $1 "." $2}' > target.txt
该命令将train.txt中的每一行以"."为分隔符划分为2段,然后选取第一段小于163481的行,输出到指定文件target.txt中。
awk 'condition {print ...}'
val.txt每行为XXX.jpg..,希望删除最后连个小数点:
sed -i 's/\.\.//g' val.txt
sed命令行格式为:
sed [-nefri] [动作] 输入文本
-i:直接修改文件内容,而不是由屏幕输出
-n:只有经过sed特殊处理的那行才会输出
小数点.需要使用转移符\,因为在正则表达式里,.表示任意一个字符,*表示重复,.*表示任意一串字符
train.txt包含了所有训练图片名称,却发现没有给标签,本来希望有对指定行进行替换的命令,但是sed 's///g'好像没有制定某些行的参数,后来发现sed的function有打印p这个参数,下列语句可以方便地列出train.txt的第1-6行:
cat train.txt | sed -n '1,6p'
所以想到用下列语句分别对两类给标签,重定向到两个文件,然后合并,不过类数很多时这个方法好想不适用:
cat train.txt | sed -n '1,68580p' | sed 's/jpg/jpg 0/g'