最初の列の正確な数字が awk/sed と一致する場合、行を保存

最初の列の正確な数字が awk/sed と一致する場合、行を保存

だから私の入力は次のようになります。

1,somerandomwordsx,some.random.words,random.numbers.word,random
2,somerandoms,random,randomnumber,
1,randomwords,word1,word2,word3
21,randomwords,words.random,unique.word,more.random.words
111,randomword1,random.word2

出力は次のようになります。

1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

awk、grep、sedで多くを試しましたが、カンマを無視するか、「111」を含むすべての「1」一致を含めます。最初の列に正確な数字1の行のみを保存する必要があります。 。

助けてくれてありがとう!

答え1

使用awk:

$ awk -F , '$1 == 1' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

awk各行をカンマ区切りのフィールドセットとして読み取ることができます。上記のコードは、$1最初のフィールド()を持つすべての行を印刷します1

使用sed:

$ sed '/^1,/!d' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3
$ sed -n '/^1,/p' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

使用grep:

$ grep '^1,' file
1,somerandomwordsx,some.random.words,random.numbers.word,random
1,randomwords,word1,word2,word3

withsedとを使用すると、「行の先頭に文字があり、その後にカンマが続きます」をgrep意味する正規表現を使用できます。式を行の先頭に固定してコンマを後ろに一致させることで、または等で始まる行が一致するのを回避できます。^1,1^11112

最初のsedバリアントはパターンと一致しないすべての行を削除し、他のバリアントはパターンに一致する行のみを印刷します。効果は同じです。

関連情報