1

誰かがこれで私を助けることができるかどうか疑問に思っていました. したがって、10 行、while ループ、および 10 から始まるカウンターを含むテキスト ファイルがあります。ループの反復ごとに、それをデクリメントします。ただし、反復ごとに、最初のローテーションの 10 行目と 2 番目のローテーションの 9 行目を抽出して比較したいと考えています。値を渡して特定の行を抽出すると言う関数はありますか? またはそれのいくつかの組み合わせ。助けていただければ幸いです ありがとう

4

3 に答える 3

1

シェルで次のことを試してください。

read -p "Give me the number of the wanted line >>> "
sed -n "${REPLY}{p;q}" FILE
于 2012-10-04T21:51:56.357 に答える
1

尾と頭でこれを行うことができます:

line=$(tail -n "+$N" file | head -n 1)

tail -n "+$N" file$N行番号から始まるファイルを出力しhead -n 1、末尾から受け取った最初の行を出力します。最終結果は変数に格納されます$line(最後の改行文字なし)。

より短いものが必要な場合は、sed oneliner があります。

line=$(sed -n -e "$N { p; q }" file)

これは、行番号でのみ print "p" コマンドを呼び出し、$Nquit "q" コマンドで終了します。

編集:別の回答のコメントでグレン・ジャックマンqが提案したコマンドを追加しました

于 2012-10-04T21:49:23.650 に答える
1

行番号を に渡しますawk

変数に行番号があるi場合:

val=$(awk -v line=$i 'NR==line{print;exit}' filename)

i番目の行を variableに格納しますval

于 2012-10-04T21:50:05.070 に答える