我正在努力:
示例输出:find / -mmin -30 -ls
310116371 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/wchan
310116373 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/schedstat
310116374 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/cpuset
310116383 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/oom_score
310116384 0 -rw-r--r-- 1 root root 0 Jan 14 0814 /proc/4732/oom_adj
310116382 0 -rw-r--r-- 1 root root 0 Jan 14 0814 /proc/4732/loginuid
310116416 0 -r-------- 1 root root 0 Jan 14 0814 /proc/4732/limits
310116418 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/io
我想要的是什么:
310116371#0#-r--r--r--#1#root#root#0#Jan 14 0814#/proc/4732/wchan
具体来说,我想使用{awk,sed,tr}来替换空间量大于1的空格。唯一的问题是,目录列表的时间戳arg之后有一个空格...
现在有一种计算方法可以解决这个问题吗?
我尝试了什么:
find / -mmin -5 -ls | awk '{gsub(/s+/,"#",$0); print;}'
find / -mmin -5 -ls | awk '{gsub(/[' ']+/,"#")}1'
find / -mmin -5 -ls | awk '{gsub(/[" "]+/,"#")}1'
find / -mmin -5 -ls | sed "s/^ *//;s/ *$//;s/ \{1,\}/#/g"
find / -mmin -5 -ls | awk -D '{gsub([ +],"#",$0); print;}'
find / -mmin -5 -ls | awk '{gsub(/\t/,"#",$0); print;}'
问题:
- find / -mmin -5 -ls
的输出不是{tab,逗号}默认分隔
关于我哪里出错的任何建议?
答案 0 :(得分:2)
这对我有用awk 'gsub(/\s+/,"#")'
:
$ awk 'gsub(/\s+/,"#")' file
310116371#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/wchan
310116373#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/schedstat
310116374#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/cpuset
310116383#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/oom_score
310116384#0#-rw-r--r--#1#root#root#0#Jan#14#0814#/proc/4732/oom_adj
310116382#0#-rw-r--r--#1#root#root#0#Jan#14#0814#/proc/4732/loginuid
310116416#0#-r--------#1#root#root#0#Jan#14#0814#/proc/4732/limits
310116418#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/io
或awk 'gsub(/\s{2,}/,"#")'
:
具体来说,我想用{awk,sed,tr}替换空格 空间量大于1(所以,我可以保留时间戳 ARG)
$ awk 'gsub(/\s{2,}/,"#")' file
310116371#0 -r--r--r--#1 root#root#0 Jan 14 0814 /proc/4732/wchan
310116373#0 -r--r--r--#1 root#root#0 Jan 14 0814 /proc/4732/schedstat
310116374#0 -r--r--r--#1 root#root#0 Jan 14 0814 /proc/4732/cpuset
310116383#0 -r--r--r--#1 root#root#0 Jan 14 0814 /proc/4732/oom_score
310116384#0 -rw-r--r--#1 root#root#0 Jan 14 0814 /proc/4732/oom_adj
310116382#0 -rw-r--r--#1 root#root#0 Jan 14 0814 /proc/4732/loginuid
310116416#0 -r--------#1 root#root#0 Jan 14 0814 /proc/4732/limits
310116418#0 -r--r--r--#1 root#root#0 Jan 14 0814 /proc/4732/io
# Single spacing
$ awk 'gsub(/\s{2,}/," ")' file
310116371 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/wchan
310116373 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/schedstat
310116374 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/cpuset
310116383 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/oom_score
310116384 0 -rw-r--r-- 1 root root 0 Jan 14 0814 /proc/4732/oom_adj
310116382 0 -rw-r--r-- 1 root root 0 Jan 14 0814 /proc/4732/loginuid
310116416 0 -r-------- 1 root root 0 Jan 14 0814 /proc/4732/limits
310116418 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/io
修改强>
如何设置OFS
变量:
# Hash seperated
$ awk 'BEGIN{OFS="#"}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11}' file
310116371#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/wchan
310116373#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/schedstat
310116374#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/cpuset
310116383#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/oom_score
310116384#0#-rw-r--r--#1#root#root#0#Jan#14#0814#/proc/4732/oom_adj
310116382#0#-rw-r--r--#1#root#root#0#Jan#14#0814#/proc/4732/loginuid
310116416#0#-r--------#1#root#root#0#Jan#14#0814#/proc/4732/limits
310116418#0#-r--r--r--#1#root#root#0#Jan#14#0814#/proc/4732/io
# Hash sperated accounting for the spaces in the date
$ awk 'BEGIN{OFS="#"}{print $1,$2,$3,$4,$5,$6,$7,$8" "$9" "$10,$11}' file
310116371#0#-r--r--r--#1#root#root#0#Jan 14 0814#/proc/4732/wchan
310116373#0#-r--r--r--#1#root#root#0#Jan 14 0814#/proc/4732/schedstat
310116374#0#-r--r--r--#1#root#root#0#Jan 14 0814#/proc/4732/cpuset
310116383#0#-r--r--r--#1#root#root#0#Jan 14 0814#/proc/4732/oom_score
310116384#0#-rw-r--r--#1#root#root#0#Jan 14 0814#/proc/4732/oom_adj
310116382#0#-rw-r--r--#1#root#root#0#Jan 14 0814#/proc/4732/loginuid
310116416#0#-r--------#1#root#root#0#Jan 14 0814#/proc/4732/limits
310116418#0#-r--r--r--#1#root#root#0#Jan 14 0814#/proc/4732/io
# Single space sperated
$ awk 'BEGIN{OFS=" "}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11}' file
310116371 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/wchan
310116373 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/schedstat
310116374 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/cpuset
310116383 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/oom_score
310116384 0 -rw-r--r-- 1 root root 0 Jan 14 0814 /proc/4732/oom_adj
310116382 0 -rw-r--r-- 1 root root 0 Jan 14 0814 /proc/4732/loginuid
310116416 0 -r-------- 1 root root 0 Jan 14 0814 /proc/4732/limits
310116418 0 -r--r--r-- 1 root root 0 Jan 14 0814 /proc/4732/io