我有一个大文件(大约39,000行文本),包含以下内容:
1:iowemiowe093j4384d
2:98j238d92dd2d
3:98h2d078h78dbe0c
(continues in the same manner)
Run Code Online (Sandbox Code Playgroud)
我需要反转行的两个部分的顺序,因此输出将是:
iowemiowe093j4384d:1
98j238d92dd2d:2
98h2d078h78dbe0c:3
Run Code Online (Sandbox Code Playgroud)
相反,我已经尝试使用cut来做到这一点但是却无法让它正常运行(这是在bash环境中),最好的方法是什么?
awk -F: '{print $2":"$1}' input-file
Run Code Online (Sandbox Code Playgroud)
要么
awk -F: '{print $2,$1}' OFS=: input-file
Run Code Online (Sandbox Code Playgroud)
如果您有两个以上的字段:
awk -F: '{print $NF; for(i=NF-1; i; i-- ) print ":"$i }' input-file
Run Code Online (Sandbox Code Playgroud)
要么
perl -F: -anE '$\=:; say reverse @F' input-file
Run Code Online (Sandbox Code Playgroud)
要么
perl -F: -anE 'say join( ':', reverse @F)' input-file
Run Code Online (Sandbox Code Playgroud)
(这两个perl解决方案都未经过测试,我认为存在缺陷,每个都需要chop $F[-1]或类似地删除输入中的换行符.)