仅当特定列中的值/字符串存在时,需要有关awk(或sed)命令的帮助才能选择行.
例:
我只想在第5列中存在单词'true'时返回该行,如果第5列中不存在'true',则不要返回该行
输入:
john,jacob,jingle,schmidt,true
jason,jack,john,true,false
oscar,meir,true,weiner,false
tiffany,amber,false,theissen,true
jack,john,sally,true,true
Run Code Online (Sandbox Code Playgroud)
期望的输出:
john,jacob,jingle,schmidt,true
tiffany,amber,false,theissen,true
jack,john,sally,true,true
Run Code Online (Sandbox Code Playgroud)
我知道如何拉回一个有一个单词的行,并且没有这样的单词:
awk '/true/ && !/false/'
Run Code Online (Sandbox Code Playgroud)
但那不会工作,我知道如何删除一个单词,如果它在特定列中
awk 'BEGIN{FS=OFS=","} {sub(/true */, "", $5)} 1'
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将这两者结合起来.
我最好的猜测是:
awk 'BEGIN{FS=OFS=","} {"/true/",$5}
Run Code Online (Sandbox Code Playgroud)
最坏的情况....:)
awk 'BEGIN{FS=OFS=","} {sub(/true */, "Unmatchablestring", $5)} 1' | awk '/Unmatchablestring/'
Run Code Online (Sandbox Code Playgroud)
您可以使用:
awk -F, '$5 == "true"' file
Run Code Online (Sandbox Code Playgroud)