linux - 在 unix 文件中搜索列?

标签 linux unix awk grep

我有以下数据文件:

136110828724515000007700877  
137110904734015000007700877  
138110911724215000007700877  
127110626724515000007700871  
127110626726015000007700871  
131110724724515000007700871  
134110814725015000007700871  
134110814734015000007700871  
104110122726027000001810072  
107110208724527000002900000

我想提取第 3 列的值,即 6787714447 的值。 我尝试使用:-

awk "print $3" <filename>

但是没有用。我应该改用什么?

最佳答案

cut 是一个更好的工作:

$ cut -c 3 < file
6
7
8
7
7
1
4
4
4
7

根据man cut:

-c, --characters=LIST

select only these characters

为了使它们全部出现在同一行中,管道 tr -d '\n':

$ cut -c 3 < file | tr -d '\n'
6787714447

甚至 sed 在末尾有新行:

$ cut -c 3 < file | tr -d '\n' | sed 's/$/\n/'
6787714447

:

$ grep -oP "^..\K." file
6
7
8
7
7
1
4
4
4
7

:

$ sed -r 's/..(.).*/\1/' file
6
7
8
7
7
1
4
4
4
7

:

$ awk '{split ($0, a, ""); print a[3]}' file
6
7
8
7
7
1
4
4
4
7

关于linux - 在 unix 文件中搜索列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202259/

相关文章:

python - 如何让两个不同的python脚本在同一个端口上运行?

python - 如何更新/安装 gcovr 以匹配我更新的编译器 gcc

c# - Linux 和 Windows 中的单声道

linux - 使用 bash 遍历文件(和目录)名称

linux - awk 模式匹配的正确语法是什么

linux - 在 Perl 中发送 linux 命令 - Grep 管道到 grep

linux - 压缩和删除 unix 中的日志

AWK 从文件中打印每第 n 行

linux - 如果第二列中的数据相同,则第一列的 Bash 添加

php - PHP中的流程重生和信号处理