![[重複]列で正確な文字列を検索する](https://linux33.com/image/144310/%5B%E9%87%8D%E8%A4%87%5D%E5%88%97%E3%81%A7%E6%AD%A3%E7%A2%BA%E3%81%AA%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B.png)
単語は行内に「、」で区切られ、各行には同じ数の単語(例:4)があるファイルがあります。したがって、その形は次のとおりです。
something1,something2,something3,something4
4番目の列に含まれる行を正確に検索したいのですがsomething4
、次のような行がある場合はどうすればよいですか?
something1,something2,something3,1_something4
grepを使用すると、これら2つの行を取得できますが、4番目の要素の行だけが必要です。something4
どうすればいいですか?
答え1
次の目的で使用できますawk
。
awk -F, '$4 == "something4"' file.csv
4番目の列を持つ行の行全体を印刷する必要があります。something4
変数を渡すには、awk
次のことが必要です。
var1=$(echo "something,something4" | cut -f2 -d,)
awk -F, -vsearch="$var1" '$4 == search' file.csv
答え2
または、列が4つしかなく、最後の列に具体的な内容を提供したい場合は、
grep ',something4$' < input
(grepを使用しても問題ない場合は投稿してください。アッ良い解決策です)。
答え3
cut
通常、この種の問題には必要な列だけをインポートできますgrep
。
echo something1,something2,something3,something4 | cut -d , -f 4 | grep '^something4$'