主页 > 数据处理 > linux系统使用shell脚本对文件的编辑问题,请赐教!

linux系统使用shell脚本对文件的编辑问题,请赐教!

2024-01-07 09:38来源:m.sf1369.com作者:宇宇

一、linux系统使用shell脚本对文件的编辑问题,请赐教!

1. sed '6d' yourfile > /tmp/yourfile.tmp && mv -f /tmp/yourfile.tmp yourfile

2. sed '3G' yourfile

3. sed -n '8s/^..\(...\).*/\1/p' yourfile

二、linux列统计不同值操作的awk或shell脚本

!#/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不一定。

三、用linux Shell编写一个脚本遍历文件夹下面的所有文件并找出不同之处输出到另一个新文件里面

diff这个命令本身就可以实现啊

四、LINUX脚本怎么实现在不同的数据库中查询插入数据

mysql?

直接导出表结构,然后再导入到B就可以了啊

五、谁能帮忙写个Linux shell脚本,完成行处理

我用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 选项,就是为了支持正则中使用大括号。

六、linux下编写一个脚本,它接受用户的一个数,并显示从1到该数字之间的所有数字的平方?

#! /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

没检查 凑合用吧,我也不会

相关推荐

车联网企业国内有哪些?

数据处理 2023-12-23

注册计量师-请教贴

数据处理 2023-12-19

逆光照片怎么处理

数据处理 2023-12-08