Linux shell 命令行学习过程记录

1.可以使用Linux命令cut和sort搭配来实现第一列每个标签及其出现的次数。
假设要统计的文件为file.txt,其中第一列为要统计的列,可以使用以下命令:

`cut -f1 file.txt | sort | uniq -c`

这个命令的具体含义如下:

cut -f1 file.txt:提取文件file.txt中的第一列
sort:将提取出来的第一列进行排序
uniq -c:将排序后的结果去重,并且在每个不同的值前输出它出现的次数
这个命令的输出结果就是一个以出现次数为首列,以出现的文字为第二列的表格,例如:

5 Apple
10 Banana
2 Cherry

表示file.txt中第一列中,出现了5次Apple,10次Banana,2次Cherry。

2.在Linux中,可以使用grep命令来提取包含特定字符串(例如"label1")的行。以下是使用grep命令的示例:

grep "label1" filename

将"filename"替换为要搜索的实际文件名。这将输出文件中所有包含"label1"的行。

如果想要对某个目录下的多个文件执行此操作,可以使用通配符 * 来匹配多个文件,例如:

grep "label1" /path/to/directory/*

这将在/path/to/directory/目录下的所有文件中搜索并输出包含"label1"的行。

如果想要忽略大小写,可以使用-i选项:

grep -i "label1" filename

这将在搜索时忽略大小写,例如"label1"、“LABEL1”、"Label1"等都会匹配。

3.实现提取文件中第一列和第二列不相等的所有行

可以使用awk命令来实现。以下是使用awk命令的示例:

awk '$1 != $2' filename

将"filename"替换为要处理的实际文件名。该命令将打印出第一列和第二列不相等的所有行。

如果数据是以空格或制表符分隔的,可以使用awk命令的默认字段分隔符来处理。如果数据使用不同的字段分隔符,可以使用-F选项指定分隔符。例如,如果字段是以逗号分隔的,可以使用以下命令:

awk -F ',' '$1 != $2' filename

这将根据逗号作为字段分隔符进行比较。

4.根据文本文件中的第三列数字进行全文排序
可以使用Linux中的命令行工具sort结合一些其他工具来实现。

假设文本文件名为data.txt,文件内容如下:

Apple Orange 10
Banana Pineapple 5
Grape Lemon 2

可以使用以下命令来根据第三列数字进行排序:

sort -k3 -n data.txt

这个命令使用了sort命令,并通过-k3选项指定按照第三列进行排序,-n选项指定按照数字进行排序。运行以上命令后,输出会按照第三列数字的升序排序,结果如下:

Grape Lemon 2
Banana Pineapple 5
Apple Orange 10

这样,就可以根据第三列数字对整个文本进行排序了。

5.$() 命令替换

your_linux_command --input_file $(cat time_file.txt)

在命令行中, ( ) 是一种命令替换( c o m m a n d s u b s t i t u t i o n )的语法,用于将一个命令的输出作为另一个命令的一部分。具体来说, () 是一种命令替换(command substitution)的语法,用于将一个命令的输出作为另一个命令的一部分。具体来说, ()是一种命令替换(commandsubstitution)的语法,用于将一个命令的输出作为另一个命令的一部分。具体来说,(command) 将执行 command 并将其输出结果插入到命令行中。
在提供的命令行示例中, ( c a t t i m e f i l e . t x t ) 表示执行 c a t t i m e f i l e . t x t 命令,并将其输出结果(即文件中的内容)插入到命令行中。换句话说, (cat time_file.txt) 表示执行 cat time_file.txt 命令,并将其输出结果(即文件中的内容)插入到命令行中。换句话说, (cattimefile.txt)表示执行cattimefile.txt命令,并将其输出结果(即文件中的内容)插入到命令行中。换句话说,(cat time_file.txt) 将被替换为文件 time_file.txt 的内容。
因此,your_linux_command --input_file $(cat time_file.txt) 中的 $() 部分将被替换为 time_file.txt 文件的内容,并作为 --input_file 参数传递给 your_linux_command 命令。

awk 'NR==FNR{path=$0} NR>FNR{ print $5 }' time_file "$(cat time_file)"

在上述命令中,time_file被用作awk命令的两个输入源。首先,它作为第一个文件(NR==FNR条件下)用于将路径保存到变量path中。然后,它作为第二个文件(NR>FNR条件下)用于在该路径指向的文件上执行打印第5个字段的操作。

6.整个文件夹的复制操作
在Linux中,可以使用cp命令将整个文件夹复制到另一个路径里面。以下是cp命令的用法:

cp -r 源文件夹 目标文件夹

其中,-r选项表示递归复制,用于复制整个文件夹及其内容。

7.将文件中含有特定字词的行删除
要在Linux中删除每一行中包含特定字符串(例如"疫情")的行,可以使用grep和sed命令的组合。以下是一种方法:

grep -v "疫情|其他词|更多词" filename.txt > newfile.txt

上面这个例子的命令将从名为filename.txt的文件中读取内容,并将不包含字符串"疫情"的行输出到名为newfile.txt的新文件中。原始文件将保持不变。

如果希望直接修改原始文件,而不创建一个新文件,可以使用以下命令:

sed -i '/疫情\|其他词\|更多词/d' filename.txt

注意,这会直接修改原始文件,记得提前备份文件以防意外。

8.提取文件中的特定列数据
可以用awk或cut来提取文件中的特定列数据。

举例:使用awk命令提取第一列和第五列的数据:

awk '{print $1, $5}' 文件名

这将打印文件中每行的第一列和第五列数据。

使用cut命令提取第一列和第五列的数据:

cut -d ' ' -f 1,5 文件名

这将以空格作为分隔符,提取文件中每行的第一列和第五列数据。

9.Linux文件固定词语替换
将文件中的一个词替换为另一个词,可以使用sed命令。sed是一个流式文本编辑器,可以用于对文本进行替换操作。

下面是使用sed命令将文件中的一个词替换为另一个词的一个简单例子:

sed 's/旧词/新词/g' 文件名 > 新文件名

如果希望直接在原始文件上进行替换而不创建新文件,可以省略 > 新文件名 部分:

sed -i 's/旧词/新词/g' 文件名

注意,-i 选项会直接修改原始文件。

10.给文件中的特定行新增一列数据的操作
例如要给一个文件中的1-200行增加一列全为“w"的列:

sed -i '1,200 s/$/ w/' 文件名

这将直接修改文件,将1-200行的每行的末尾添加一个空格和"w"。

11.查看文件中固定行的内容
要查看文件中的第5000行内容,可以使用head和tail命令的组合:

head -n 5000 文件名 | tail -n 1

这个命令将首先使用head -n 5000命令获取文件的前5000行,然后通过tail -n 1命令获取这5000行中的最后一行,即第5000行的内容。

如果只想查看第5000行的内容而不希望显示之前的行,也可以直接使用sed命令:

sed -n '5000p' 文件名

这个命令将只输出文件中的第5000行内容。

这个可以查看行区间的内容:

sed -n '3,5p' 你的文件名

在Vim编辑器中,可以使用以下方式来定位到指定行数:
1.使用行号命令:在Normal 模式下,按下冒号(:)进入命令行模式,然后输入要跳转的行号,再按回车键。
例如,要跳转到第5000行,可以执行以下操作:

:5000

2.使用相对行号:在Normal 模式下,按下冒号(:)进入命令行模式,然后输入+或-加上相对行数,并按回车键。
例如,要向下移动10行,可以执行以下操作:

:+10

3.使用搜索命令:在Normal 模式下,按下斜杠(/)进入搜索模式,然后输入要搜索的行内容或关键词,并按回车键。Vim将会定位到第一个匹配的行。
例如,要搜索包含特定内容的行,可以执行以下操作:

/要搜索的内容

12.对文件中的数据进行排序或选择
在 Linux 命令行中使用命令对文件中的数据进行排序,你可以使用 sort 命令。
举个例子,根据文件第二列的数值对整个文件从小到大进行排序:

sort -k2 input.txt > sorted_input.txt

其中:
sort 命令用于对输入进行排序。
-k2 选项指定按照第二列进行排序。
注意:上述例子的排序是按照字符串顺序进行的,如果你的来源信息是数字,可能会按照字典顺序排序而不是数值顺序排序。如果你希望按照数值顺序排序,可以使用 -n 选项。例如:

sort -k2 -n input.txt > sorted_input.txt
或
sort -k2n input.txt > sorted_input.txt
#第二列就是数值的情况

这样会按照来源信息作为数值进行排序。

如果想对文件进行条件筛选,可以使用awk命令:
例如如果想筛选出某个文件中所有第二列大于0.85的行,可以这样执行命令行:

awk '$2 > 0.85' input.txt > filtered_output.txt

13.选择性查找
比如说要得到一个文件中第一列和第三列不一样的行,可以使用awk命令:
假设文件的列是以空格或制表符分隔的,可以按照以下方式操作:

awk '{ if ($1 != $3) print $0 }' 文件名

该命令将遍历文件的每一行,比较第一列和第三列的值是否相等。如果不相等,则打印该行的内容($0表示整行)。这样就会输出第一列和第三列不相同的数据行。

如果要直接统计不一样的数目:

awk '{ if ($1 != $3) count++ } END { print count }' 文件名

该命令将遍历文件的每一行,比较第一列和第三列的值是否相等。如果不相等,则将计数器count加一。在处理完所有行后,使用END块输出计数器的值,即第一列和第三列不相同的数目。

如果要根据文件的第一行内容修改第二行的内容,举例:如果文件中第一列为0,则将所有相应的第二列的值变为1-原值:
可以使用awk命令来完成这个任务

awk '{ if ($1 == 0) $2 = 1 - $2; print }' 文件名

这个命令使用awk来处理文件。如果第一列的值为0,它将第二列的值设置为1减去原值。然后,它打印每一行,包括已修改的行。执行该命令后,它会直接在终端上输出结果。如果你想将结果保存到文件中,可以使用重定向符号(>)将输出重定向到一个新文件。

14.数据提取

提取一个文件中倒数第二列的全部数据:(内容是以空格分隔)

awk '{print $(NF-1)}' data.txt

在awk命令中, ( N F − 1 ) 表示倒数第二列, N F 是指当前行的字段数量(列数)。通过 (NF-1)表示倒数第二列,NF是指当前行的字段数量(列数)。通过 (NF1)表示倒数第二列,NF是指当前行的字段数量(列数)。通过(NF-1)即可提取倒数第二列的数据。

如果想获取倒数第二列之前的所有列:

awk '{$NF=""; print $0}' data.txt

在awk命令中,$NF表示最后一列(倒数第一列)。通过将最后一列设为空值"",可以将其从输出中删除。然后,print $0打印整行的剩余部分(即倒数第二列之前的所有列)。

这样,将获得文件中倒数第二列之前的所有列的提取结果。请注意,输出结果中的列之间仍然保留原始的分隔符(空格)。如果需要更复杂的分隔符处理,可以在awk命令中指定相应的分隔符选项(例如-F参数)来适应您的数据格式。

在第一列数据前面统一打上__label__前缀:

awk '{printf "__label__%s", $1; for (i=2; i<=NF; i++) printf " %s", $i; print ""}' data.txt

这样原来的数据会从John 30 A变成__label__John 30 A
在awk命令中,$1表示第一列的值。通过printf "label%s"即可在第一列前添加__label__前缀。然后,使用for循环遍历剩余的列,并使用printf打印每一列的值。最后,通过print ""打印一个空行来确保每行的结束。
这样,就在文件的第一列前都加上了__label__前缀。

15.直接去掉某个文件中所有行的第一列
可以使用 Linux 命令行工具 awk 或 cut
1.使用 awk 去除第一列:

awk '{$1=""; print $0}' input.txt > output.txt

2.使用 cut 去除第一列(适用于以空格或制表符分隔的文件):

cut -f 2- input.txt > output.txt

这个命令假定文件中的字段是通过制表符或空格分隔的,它会将输入文件 input.txt 中的每一行的第一列去除,并将结果保存到 output.txt 文件中。如果字段分隔符是其他字符,你可以使用 -d 参数来指定。

16.提取某个文件中的奇数行或者是偶数行

可以使用sed命令或awk命令来实现提取奇数行(偶数行类似):
方法一:使用sed命令

sed -n '1~2p' file.txt

方法二:使用awk命令

awk 'NR % 2 == 1' file.txt

17.没执行完的程序转后台运行
即使关闭了xshell,程序依然在运行,使用nohup命令

nohup /home/ict/tyr/python3.9/bin/python3.9 harm.py &

可以查看现在后台正在执行的任务

jobs -l

注意,这个nohup执行后推出xshell不能直接叉掉窗口退出,不然后台程序可能会停止运行,用exit命令行退出即可。

18.解压/压缩tar文件压缩包
在Linux系统中,解压tar文件的命令是使用tar命令。具体的命令取决于tar文件的格式,常见的格式有.tar、.tar.gz、.tar.bz2等。
1.解压.tar文件

tar -xvf 文件名.tar

2.解压 .tar.gz 文件

tar -xzvf 文件名.tar.gz

3.解压 .tar.bz2 文件

tar -xjvf 文件名.tar.bz2

4.压缩文件夹

tar -czvf archive.tar.gz /path/to/your/folder

archive.tar.gz是压缩包名字,/path/to/your/folder是被压缩的文件夹的路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值