我有以下格式的数据文件
1|col2|col3|105,230,3,44,59,62|col5
2|col2|col3|43,44|col5
3|col2|col3|1,2,3,4,5,6,7,8|col5
4|col2|col3|1,2,37|col5
因此,来自上述给定数据的理想记录是
1|col2|col3|105,230,3,44,59,62|col5
3|col2|col3|1,2,3,4,5,6,7,8|col5
我目前正在使用以下命令,但我正在寻找一个更有效/更有组织的命令
awk -F"|" '$4 ~ /,3,/ || $4 ~ /^3,/ || $4 ~ /,3$/'
最佳答案
简短的 GNU awk
解决方案:
awk -F'|' '$4 ~ /\<3\>/' file
\<
和 \>
- 分别代表单词的开头和结尾 输出:
1|col2|col3|105,230,3,44,59,62|col5
3|col2|col3|1,2,3,4,5,6,7,8|col5
或者更统一/便携的:
awk -F'|' '$4 ~ /(^|,)3(,|$)/' file
关于linux - 在具有两个分隔符的文件中搜索值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48883287/