同様の問題があります文字列の特定の開始から終了まで、一致の前後のテキストを印刷します。しかし、反転があります。
私のファイルは手動で作成された大容量CSVファイルです。これには「WAP」という文字列が複数回含まれています。私の使命は、WAP文字列のすべてのインスタンスを検出し、その文字が数字の場合は、前の2文字の一致をそれぞれ印刷することです。
私はこのような文字列検索を行ったことがないので、あなたが提供できる指示は私の仕事に大きな助けになります。みんなありがとうございます。
~ダニエル~
Sample from spreadsheet:
,x,x,x,x,x,xx,Yes,"1 WAP, other stuff, other stuff",no,x
Intended output from that line:
1
以前はawkを使ったことがないのでここまで来ました。
awk '/WAP/{印刷}' ~/spreadsheets/waps.csv
一致するすべての行を印刷したいようです。私がしなければならないのは、ループを実行し続け、WAPが一致するまで文字を蓄積してから、2つの文字を前に取得することです。しかし、私が最後にこれをしたのは、私が大学に通った時の1999年でした。
ベストアンサー1
以下はサンプルawk
スクリプトです。
awk '/..WAP../{print substr($0, index($0,"WAP") - 2, 7);}' input.csv
入力例:
junk
line 1 12WAP34 678
another line abWAPcdefg
WAP123
junk WAP
出力:
12WAP34
abWAPcd
説明する:
/..WAP../{ # for line containt WAP with 2 chars wrap
wapPosition = index($0,"WAP") - 2; # find the position of WAP - 2 chars
output = substr($0, wapPosition, 7);# output is 7 chars length from wapPostion
print output; # print output
}