shell学习(20230412)
1、comm命令
作用:用于两个文件之间的比较
结果:
交集:两个文件所共有的行
求差:指定文件所包换且不相同的行
差集:包含在A文件中,但不包括在B文件中的行
PS:comm命令的输入必须是排序过的文件
示例:
[root@spark10 linux_test]# cat input.txt
admin
password
is
end
[root@spark10 linux_test]# cat uniq.txt
start
end
first
ok
ok
is
is
is
[root@spark10 linux_test]# sort input.txt -o input.txt ; sort uniq.txt -o uniq.txt
[root@spark10 linux_test]# comm input.txt uniq.txt
admin
end
first
is
is
is
ok
ok
password
start
[root@spark10 linux_test]#
第一列,只在input.txt出现的行,第二列,只在uniq.txt出现的行,第三列,input.txt和uniq.txt都出现的行
其中:
-1 从输出结果中删除第一列
-2 从输出结果中删除第二列
-3 从输出结果中删除第三列
示例:
需要打印两个文件的交集,删除出现的第一、第二列,保留第三列
[root@spark10 linux_test]# comm input.txt uniq.txt -1 -2
end
is
[root@spark10 linux_test]#
示例二
删除第三列,并将第一二列合并成一列
[root@spark10 linux_test]# comm input.txt uniq.txt -3 |sed 's/^\t//'
admin
first
is
is
ok
ok
password
start
[root@spark10 linux_test]#
sed 's/^\t//'命令解析:
s: 替换的意思
/^\t/: ^行首标记,匹配行首\t字符
//: 中间没有字符,用于替代行首的\t字符,用于删除行首的\t字符
2 创建不可修改的文件
chattr命令
A、创建不可修改的文件:chattr +i input1.txt
[root@spark10 linux_test]# chattr +i input1.txt
[root@spark10 linux_test]# rm input1.txt
rm: remove regular file ‘input1.txt’? y
rm: cannot remove ‘input1.txt’: Operation not permitted
[root@spark10 linux_test]#
B、移除不可修改的特性:chattr -i input1.txt
[root@spark10 linux_test]# chattr -i input1.txt
[root@spark10 linux_test]# rm input1.txt
rm: remove regular file ‘input1.txt’? y
[root@spark10 linux_test]#