行の先頭で "[1-777])" すべての文字を検索します。

行の先頭で "[1-777])" すべての文字を検索します。

疑似命令

perl -pe 'g/^[1-777])/g' data.txt 

行の先頭のすべての数字の後に「)」などを1)追加してみました。67)777)

すべての質問番号1)のデータを見つける必要があります(など、...しかしそうではありません)16)68)16.778)

1) hello 
A) Options here which should be not matched. 
16) hello 16. old
A) Options here which should be not matched. 
68) yes question
A) Options here which should be not matched. 
...
582) hurray
A) Options here which should be not matched. 
778)
A) Options here which should be not matched. 

777より前の数字のみを探します。

希望の出力

1,16,68,582,777 

その後、Sedコマンドに供給できます。最後に、可能であればこのコマンドの結果を返します(カンマ区切り):、sed -n '1,4,582' full_data.txtディスカッションここ、Perlからsedへの一種のパイプですか、それともPerlにありますか?

行の先頭からすべての数字を返す方法は?

答え1

いくつかの明確な反復でわかるように、777より大きくない値を持つ整数のみをカンマ区切りリストに収集する必要があります。ここにあります:

awk -F ')' '$1~/^[0-9]+$/ && $1<=777 {print $1}' <datafile | paste -sd,

注:整数の範囲を一致させるには、次のようにawk書くこともできます。

awk -F ')' '$1>=1 && $1<=777 {print $1}' <datafile | paste -sd,


以下のバリアントを関連タスクのコンポーネントとして保持します。

作るすべての問題番号:

cut -d ')' -f1 <datafile | paste -sd,

次の出力が生成されます。

1,2,3,...,582

または項目に以下がある場合空の答え(例:777)は考慮しないでください。

awk -F ') ?' '$2!="" {print $1}' <datafile | paste -sd,

または以下がある場合数値限界777 以下を考慮してください。

awk -F ')' '$1<=777 {print $1}' <datafile | paste -sd,

または一致のみ整数最初のフィールドでは:

awk -F ')' '$1~/^[0-9]+$/ {print $1}' <datafile | paste -sd,

答え2

まず、候補者を抽出してから最大777を確認します。

egrep '^[0-7]?[0-9][0-9]?)' file | sed 's/^\([0-7]\?[0-9][0-9]\?\))/\1 )/' | awk '($1 < 778) {print $0}' | sed 's/^\([0-7]\?[0-9][0-9]\?\) ).*/\1,/' | tr --delete \\n | sed 's/,$/\n/'

私のテストファイルで動作します。 (編集1:最後のsedは数字のみを提供します編集2:末尾の削除,

関連情報