当前位置: 技术问答>linux和unix
谁能帮我写个脚本?谢谢,急用
来源: 互联网 发布时间:2016-03-23
本文导语: GMU DSC 11427 NCK LU,GU DES CT61857 GU DES 554-5220 G611 GMU POV 11548 MIES LIO,GU PV CT62453 GU PV 554-5353 G682 CDMA SY DES 11531 TONY WAG,CDMA SYSTEM DESIGN CT27735 CDMA SYSTEM DESIGN 554-8406 G391 WI 13758 FRANK LV,CDMA BSC CT66567 ...
GMU DSC 11427 NCK LU,GU DES CT61857 GU DES 554-5220 G611
GMU POV 11548 MIES LIO,GU PV CT62453 GU PV 554-5353 G682
CDMA SY DES 11531 TONY WAG,CDMA SYSTEM DESIGN CT27735 CDMA SYSTEM DESIGN 554-8406 G391
WI 13758 FRANK LV,CDMA BSC CT66567 CDMA BSC 554-8490 G334
假设一个文本文件中有许多像上面一样的行,特点是
每行有许多字段,以空格(一个或者多个)隔开
有一个字段必然有一个逗号(不一定第几个,但肯定有且只有一个)
基于每行生成一个新行
1。首先处理要求将逗号以后的内容(包括逗号)全部清除
2。对逗号前的两个字段合并(去空格),同时插入一个特定字符串(如111111),再前面的字段(不过多少都丢弃)
3。每行之间插入一个新行,比如 2222222
比如对于前面的4行,处理输出结果如下:
111111 NCKLU
2222222
111111 MIESLIO
2222222
111111 ONYWAG
2222222
111111 FRANK LV
2222222
GMU POV 11548 MIES LIO,GU PV CT62453 GU PV 554-5353 G682
CDMA SY DES 11531 TONY WAG,CDMA SYSTEM DESIGN CT27735 CDMA SYSTEM DESIGN 554-8406 G391
WI 13758 FRANK LV,CDMA BSC CT66567 CDMA BSC 554-8490 G334
假设一个文本文件中有许多像上面一样的行,特点是
每行有许多字段,以空格(一个或者多个)隔开
有一个字段必然有一个逗号(不一定第几个,但肯定有且只有一个)
基于每行生成一个新行
1。首先处理要求将逗号以后的内容(包括逗号)全部清除
2。对逗号前的两个字段合并(去空格),同时插入一个特定字符串(如111111),再前面的字段(不过多少都丢弃)
3。每行之间插入一个新行,比如 2222222
比如对于前面的4行,处理输出结果如下:
111111 NCKLU
2222222
111111 MIESLIO
2222222
111111 ONYWAG
2222222
111111 FRANK LV
2222222
|
cut -d',' -f 1 test.txt|awk '{ printf "111111 " $(NF-1)$NF "n" "222222n"}'
test.txt是你数据的存放文件。
test.txt是你数据的存放文件。
|
$ cat add.sh
#! /bin/bash
var1=111
var2=222
#$1 is the filename
awk -F "," '{print $1}' $1 | awk -va="$var1" -vb="$var2" '{print a " " $(NF-1) $NF "n" b }'
$ ./add.sh testfile
111 NCKLU
222
111 MIESLIO
222
111 TONYWAG
222
111 FRANKLV
222
|
cut -d',' -f 1 test.txt|awk '{ printf "111111 " $(NF-1)$NF "n" "222222n"}'
|
文件名为:a.txt
cat a.txt |while read file
do
echo "$file " |awk -F "," '{print $1}' | awk '{ {n=0} {n=NF-1} print "111111",$n$NF}'
echo "2222222"
done
cat a.txt |while read file
do
echo "$file " |awk -F "," '{print $1}' | awk '{ {n=0} {n=NF-1} print "111111",$n$NF}'
echo "2222222"
done
|
space="c:\Progra~1\Intern~1\IEXPLORE.EXE\\"
newline="pause"
cut -d',' -f 1 test.txt|awk '{ printf "'${space}'" " " $(NF-1)$NF "n" "'${newline}'" "n"}'
楼主应该多试几下。