1

これが私のクエリです:

/path/newdir/newtext.csv 

newtext.csv は以下のようになります。

レコード 1

line 1
line 2
Sample Number: 123456789 (line no. 3)
|
|
|
|
|
Time In: 2012-05-29T10:21:06Z (line no. 21)
|
|
|
Time Out: 2012-05-29T13:07:46Z (line no. 30)

レコード 2

line 1
line 2
Sample Number: 363214563 (line no. 3)
|
|
|
|
|
Time In: 2012-05-29T10:21:06Z (line no. 21)
|
|
|
Time Out: 2012-05-29T13:07:46Z (line no. 30)

レコード 3

line 1
line 2
Sample Number: 987654321 (line no. 3)
|
|
|
|
|
Time In: 2012-05-29T10:21:06Z (line no. 21)
|
|
|
Time Out: 2012-05-29T13:07:46Z (line no. 30)

newtext.csv にそのような 100 レコードがあると仮定します。したがって、入力された i/p 文字列のパラメーターが必要になります。これは以下のようなものです。

入力検索文字列の例:

123456789

出力例:

Sample Number: 123456789
Time In: 2012-05-29T10:21:06Z
Time Out: 2012-05-29T13:07:46Z

これはまさに私が必要とするものです。手伝ってくれませんか ?

4

2 に答える 2

1

プレーンな入力*文字列の場合、

grep -F "InputString" -A27 inputFile.csv | sed -n '1p;19p;$p'

pattern(Extended-regex) *文字列の場合、

grep -E "InputPattern" -A27 inputFile.csv | sed -n '1p;19p;$p'

脚本:

user$ cat script.sh

#!/bin/bash 
grep -F "$1" -A27 inputFile.csv | sed -n '1p;19p;$p'

user$ chmod +x script.sh
user$ ./script.sh "inputString"

編集:

非回線番号ベースのソリューション、

#!/bin/bash 
grep -F "$1" -A27 inputFile.csv |sed -n "/$1/p;/^Time\s[^:]*:/p"

*入力はファイルに固有である必要があります。

于 2012-06-04T07:25:08.900 に答える
0

これを試して

csv.txt (入力ファイル)

Sample Number: 123456789 (line no. 3)
|
|
|
|
|
Time In: 2012-05-29T10:21:06Z (line no. 21)
|
|
|
Time Out: 2012-05-29T13:07:46Z (line no. 30)
line 1
line 2
Sample Number: 363214563 (line no. 3)
|
|
|
|
|
Time In: 2012-05-29T10:21:06Z (line no. 21)
|
|
|
Time Out: 2012-05-29T13:07:46Z (line no. 30)
line 1
line 2
Sample Number: 987654321 (line no. 3)
|
|
|
|
|
Time In: 2012-05-29T10:21:06Z (line no. 21)
|
|
|
Time Out: 2012-05-29T13:07:46Z (line no. 30)

csv.sh (コード)

echo "Enter your search string:"
read name
grep -A 10 "$name" csv.txt | grep -v "|" | awk -F "(" '{print $1}'

出力

Enter your search string: 123456789 

Sample Number: 123456789
Time In: 2012-05-29T10:21:06Z
Time Out: 2012-05-29T13:07:46Z
于 2012-06-04T07:21:24.563 に答える