今天来聊一聊linux对文件的一些操作,首先准备一个文件,里面存储一些字符串,如下图所示。
一、获得字符串在文件中所在的行
grep -n 'a b c' 1.txt
可以看出“a b c”在文件中分别为第1行和第2行。
1、也可以使用cat获得某个关键字所在的行数 https://my.oschina.net/bobwei/blog/1823639
cat -n xxx.log | grep "id='23'" | awk '{print $1}
2、根据行数将某行输出到新文件,https://blog.csdn.net/qq_27563511/article/details/79269494
vim xxx.log 打开文件
:行号 w 新文件名
3、根据关键字将关键字符串所在的行输出到新文件中
grep -n 'a b c' 1.txt > new.txt
即可将‘a b c’所在的行输出到new.txt文件中
二、输出一个文件的几行
sed -n "2, 3p" 1.txt
输出文件的第2行和第三行,sed -n "起始行 结束行p" filename,结束行后面那个字母'p'不要忘记
三、输出一个文件的几列
awk '{print $1 $2}' 1.txt
输出文件的第1列和第二列,awk '{print $1$2}' filename 输出第一列和第二列,两列之间没有空格
awk '{print $1,$2}' filename 输出第一列和第二列,两列之间有空格,
四、输出一个文件的第n1-n2行的第l1-l2列
sed -n '2, 3p' 1.txt | awk '{print $1,$2}'
输出文件的第2行和第3行中第1列和第二列的字符
五、输出文件中某一个字符串所在的行的第l1-l2列,例如:输出'a b c'所在的行中第1-2列的字符
grep -n 'a b c' 1.txt | awk '{print $1,$2}'
六、比较文件夹下面文件的差异
我们有时候需要比较两个文件夹下面各个文件的差异,直接肉眼去看可能会比较麻烦。所以可以利用linux命令:diff
最直接的使用方法就是:
diff -urNa dir1 dir2
u 使用统一的输出格式来展示不同
r 如果文件夹下面还有文件夹,则递归的进行比较
N 如果一个文件夹中有a.txt文件,而另一个文件夹中没有,则默认另一个文件夹中也有一个a.txt,但是内容为空
a 对比每一个文件,一行一行的对比
这样,命令行就会输出各个文件的不同。
如果这样看还不直观,我们可以根据上面提示出来的文件名字,使用 vimdiff 命令
vimdiff file1 file2
vimdiff 会指示出两个文件的差异,如果一个文件中有而另一个文件中没有的行就会标记为红色,两个文件中都有但是存在差异的行就会标记为蓝色。相同的地方会被折叠。
https://www.cnblogs.com/xudong-bupt/p/6493903.html