当前位置: 技术问答>linux和unix
Linux 文件查找-在线等
来源: 互联网 发布时间:2016-11-21
本文导语: 请问下高手,我想做如下操作。 文件中有如下内容,我想从倒数第二个列查找出不同的内容。 1233,23,52,235,23,6 1233,23,52,235,23,6 1233,23,52,235,23,6 1233,23,52,235,23,6 1233,23,52,235,24,6 1233,23,52,235,24,6 1233,23,52,235,24,6 1233,23,52,235,24,6...
请问下高手,我想做如下操作。
文件中有如下内容,我想从倒数第二个列查找出不同的内容。
1233,23,52,235,23,6
1233,23,52,235,23,6
1233,23,52,235,23,6
1233,23,52,235,23,6
1233,23,52,235,24,6
1233,23,52,235,24,6
1233,23,52,235,24,6
1233,23,52,235,24,6
这里倒数第二列有俩种,一个是23,另外一个24 我想做的是,23的行把内容拷贝到另外一个目录下,目录名称就是23,但是此目录是动态建立的,有23的情况下才去建目录,并且将23对应的行拷贝到该目录下,24道理和23一样。
就是当扫描完这个文件之后,会新建俩个目录,分别存放23对应行和24对应行的内容。
请教高手该如何去写,谢谢!!
文件中有如下内容,我想从倒数第二个列查找出不同的内容。
1233,23,52,235,23,6
1233,23,52,235,23,6
1233,23,52,235,23,6
1233,23,52,235,23,6
1233,23,52,235,24,6
1233,23,52,235,24,6
1233,23,52,235,24,6
1233,23,52,235,24,6
这里倒数第二列有俩种,一个是23,另外一个24 我想做的是,23的行把内容拷贝到另外一个目录下,目录名称就是23,但是此目录是动态建立的,有23的情况下才去建目录,并且将23对应的行拷贝到该目录下,24道理和23一样。
就是当扫描完这个文件之后,会新建俩个目录,分别存放23对应行和24对应行的内容。
请教高手该如何去写,谢谢!!
|
awk -F,'{print $5}' filename | sed /^23$/w 23
awk -F,'{print $5}' filename | sed /^24$/w 24
试下
awk -F,'{print $5}' filename | sed /^24$/w 24
试下
|
shell脚本
#!/bin/sh
another="."
IFS=,
while read a b c d e f
do
if [ -d $another/$e ]
then
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
else
mkdir $another/$e
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
fi
done >"$a/data.txt"; done
试试这个,文件名是data.txt
#!/bin/sh
another="."
IFS=,
while read a b c d e f
do
if [ -d $another/$e ]
then
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
else
mkdir $another/$e
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
fi
done >"$a/data.txt"; done
试试这个,文件名是data.txt
|
NF 表示列数,NF-1是倒数第二列;管道给read后,读到的a是awk打印出的倒数第二列,b则是原行的内容。
如果不知道awk怎么用,上面这行得解释长篇大论,若果知道awk也就不必解释太多
你可以先简单了解一下awk
|
#!/bin/sh
# another是你说的“另外的目录”的根目录 就是23那个文件夹的根目录
another="."
#设定分割符为逗号
IFS=,
#每次从文件读出的用逗号隔开的数字分别放在a,b,c,d,e,f中 其中e就是23,24那列
while read a b c d e f
do
#如果目录已存在 直接把这一行追加到目录下的test.txt文件中
if [ -d $another/$e ]
then
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
#如果目录不存在 先创建再追加
else
mkdir $another/$e
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
fi
done
# another是你说的“另外的目录”的根目录 就是23那个文件夹的根目录
another="."
#设定分割符为逗号
IFS=,
#每次从文件读出的用逗号隔开的数字分别放在a,b,c,d,e,f中 其中e就是23,24那列
while read a b c d e f
do
#如果目录已存在 直接把这一行追加到目录下的test.txt文件中
if [ -d $another/$e ]
then
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
#如果目录不存在 先创建再追加
else
mkdir $another/$e
echo "$a $b $c $d $e $f" >> $another/$e/test.txt
fi
done