- 1. 修改文件的timestamp(touch)
- 2. 获取部分文件(head, tail)
- 3 文件的排序(sort)
- 4. 去除重复行(uniq)
- 5. 替换文字列(tr)
- 6. 文件的比较(diff)
1. 修改文件的timestamp(touch)
每个文件都有最终更新时间,通过 ls -l可以进行确认,如果要修改最终更新时间的话,使用touch命令,不添加option的话是以当前时间更新。
touch [option] filename
另外,如果后面的filename是不存在的文件,则新建一个0 byte的文件。
$ ls -l hosts.bak
-rw-rw-r-- 1 okada okada 187 Jun 4 10:06 hosts.bak
# 以当前时间进行更新
$ touch hosts.bak
$ ls -l hosts.bak -rw-rw-r-- 1 okada okada 187 Jun 5 09:50 hosts.bak
# 以指定的时间戳进行更新
$ touch -t 06030800 hosts.bak
$ ls -l hosts.bak -rw-rw-r-- 1 okada okada 187 Jun 3 08:00 hosts.bak
-t 是指定时间的option。 時間是 [[CC]YY]MMDDhhmm[.SS] 形式([] 内可以省略)。
2. 获取部分文件(head, tail)
只想查看文件的一部分,如文件头或文件尾时,使用head和tail命令。
head [option] filename
1. -n 行 选出前n行内容
2. -c byte 选出前c byte内容
tail与head类似
2.1 特別なオプション -f
通过这个option,可以实时输出最新的文件,在确认正在写入的log文件时非常有用,如tail -f log.txt
,用Ctrl+c中断输入。
3 文件的排序(sort)
针对文件内容进行排序,排序单位为一行。
sort [option] filename
1. -r 逆向排序
2. -k n , 用第n列的数据的数据排序
3. -n 数值排序
- 如果不添加-n的话,会将100排在最前面,因为是按100的文字列排序
$ sort -n -k 3
score keiichi oka 70
yoshinori kawazu 85
toru minemura 100
4. 去除重复行(uniq)
uniq コマンドを使うことで直前の行と同じ内容があった場合、対象行を出力しません。 連続している同じ内容の行を、1行にまとめることができます。
uniq ファイル名
- 准备一份数据:
$ cat > uniq-sample
AAA
BBB
AAA
CCC
CCC
DDD
- 去除前后两行重复的数据,AAA两行并不连续,所有不会去重复:
$ uniq uniq-sample
AAA
BBB
AAA
CCC
DDD
5. 替换文字列(tr)
tr 文字列1 文字列2
- 将abc替换为ABC
$ cat FILE | tr abc ABC
- 将on替换为ON,输出到新的文件translate2中
$ cat translate | tr on ON > translate2
$ cat translate2
ANdrOid
iPhONe
WiNdOws
PhONe
6. 文件的比较(diff)
diff [オプション] ファイル 1 ファイル 2
1. -c, context diff 形式で差分を出力します。
2. -u, unified diff 形式で差分を出力します。
- 准备两份数据
$ echo"testtext" >file1
$ echo"testtext" >file2
$ echo"new line" >>file2
- 比较差异
$ diff file1 file2
1a2
> new line
添加了option的 -c和-u,可以自己试试。