发布时间:2024-01-07 09:38来源:www.sf1369.com作者:宇宇
1. sed '6d' yourfile > /tmp/yourfile.tmp && mv -f /tmp/yourfile.tmp yourfile
2. sed '3G' yourfile
3. sed -n '8s/^..\(...\).*/\1/p' yourfile
!#/bin/awk -f
BEGIN{
print 下面是文件对列的统计;
}
{
for(i=1;i<=NF;i++)
++a[i][$i];
}
END{
for(i=1;i<=NF;i++)
{
printf(第%s列,i);
for(j in a[i]) printf(\t%s,%s次,j,a[i][j]);
print ;
}
print 输出完毕;
}
将这个文件保存成一个文本文件,我这里举例文件名叫script,你要改成什么都可以
然后在命令行里敲
gawk -F, -f /path/to/script /path/to/your/txt/file
比如你的test.txt和script文件都放在同一个文件夹/home/ha,那这个命令就是
gawk -F, -f /home/ha/script /home/ha/test.txt
或者你也可以单敲一行命令
gawk -F, 'BEGIN{ print 开始输出对列的统计; } { for(i=1;i<=NF;i++) ++a[i][$i]; } END { for(i=1;i<=NF;i++) { printf(第%s列,i); for(j in a[i]) printf(\t%s,%s次,j,a[i][j]); print ; } print 输出完毕; }' test.txt
都是一样的,test.txt是你要统计的文件
这下面你的文件产生的输出
开始输出对列的统计
第1列 1,5次 10,1次
第2列 2,4次 20,2次
第3列 3,5次 30,1次
第4列 4,6次
第5列 5,5次 50,1次
第6列 6,3次 60,3次
输出完毕
awk有很多很多版本,这个脚本用gawk是可以的,其他的awk不一定。
diff这个命令本身就可以实现啊
mysql?
直接导出表结构,然后再导入到B就可以了啊
我用awk来做,one-line awk,一条命令完成。
awk --posix '{a=$0;while(getline b){if(b~^.{4},.,)a=a\nb;else a=ab};print a}' srcFile >desFile测试通过,结果重定向到desFile文件中。
思路就是:
使用getline循环获取下一行 ==> while(getline b)
判断下一行是否为标准行 ==> if(b~^.{4},.,)
- 若为标准行,则与上一行连接时使用换行符分隔 ==> a=a\nb
- 若为非标准行,则直接附加到上一行后面 ==> a=ab
最后将所有内容一起输出 ==> print a
?为通配符,而在正则中匹配一个字符要用点号 . ,{4} 表示重复前一个字符4次。
使用 --posix 选项,就是为了支持正则中使用大括号。
#! /bin/bash
# Author intelism
WARNING=Arguments must be a number.
WRONG_ARGS=65
CURRENT_NUM=1
case $1 in
) echo basename $0: ordinary file. ;;
*[0-9]*) TARGET=$1; echo you entered $TARGET ;;
*) echo $WARNING; exit $WRONG_ARGS ;;
esac
while [ $CURRENT_NUM -le $TARGET ]
do
SQUARE=$((CURRENT_NUM**2))
echo The suqare of \$CURRENT_NUM\ is $SQUARE.
CURRENT_NUM=$((CURRENT_NUM+1))
done
echo Done! ; exit 0
没检查 凑合用吧,我也不会