2

私はテキストファイルを持っています:

Hello
1
2
3
(unknown number of lines)
Hello
(unknown number of lines)
Hello
(unknow number of lines)
Hello

最初の 2 つの「こんにちは」の間の行を切り取り、ファイルに保存する方法は?
したがって、出力は次のようになります

1
2
3
(unknown number of lines)
4

2 に答える 2

3

awk の使用:

awk '$1=="Hello"{c++;next} c==1' oldfile | tee newfile

N 回出現させるには、count 変数を次のように変更します。

awk -v count=1 '$1=="Hello"{c++;next} c==count' oldfile | tee newfile
于 2013-03-27T23:17:39.807 に答える
0

これが私のために働いた簡単なbashスクリプトです:

#!/bin/bash
WORD="$1" # Word we look for, in this case 'Hello'
COUNT=0 # Internal counter for words
let MAXCOUNT="$2" # How many words to encounter before we stop
OUTPUT="$3" # Output filename
FILENAME="$4" # The file to read from
while read -r; do # read the file line by line
    [ "$MAXCOUNT" -le "$COUNT" ] && break; # if we reached the max number of occurances, stop
    if [[ "$WORD" = "$REPLY" ]]; then # current line holds our word
        let COUNT=$COUNT+1; # increment counter
        continue; # continue reading
    else # if current line is not holding our word
        echo "$REPLY" >> "$OUTPUT"; # print to output file
    fi
done <"$FILENAME" # this feeds the while with our file's contents

このように働きました:

$./test.sh "Hello" 2 output.txt test.txt # Read test.txt, look for "Hello" and print all lines between the first two occurances into output.txt

これは私が持っているものです:

$cat output.txt 
1
2
3
(unknown number of lines)

また、test.txt には以下が含まれます。

Hello
1
2
3
(unknown number of lines)
Hello
(unknown number of lines)
Hello
(unknow number of lines)
Hello
于 2013-03-27T23:41:04.580 に答える