テキストファイルの条件に基づくシェルスクリプトとロボットフレームワークテストケースの作成

テキストファイルの条件に基づくシェルスクリプトとロボットフレームワークテストケースの作成

私はロボットフレームワークテストケースに取り組んでいます。私の要件は、以下のファイルを読み、場所に基づいて値を比較することです。たとえば、

  1. 3で始まる行。 3はID番号ですが、行全体を選択して位置に応じた値を比較する必要があります。 BRONYXは位置9で始まり、位置44のNEW YORK出力と比較する必要があります。この例では、BRONYXをNEWYORKに変更する必要があります。位置に基づいて文字列を抽出する方法。

3^G^G^G^GBRONX^GNY^G10457^GUSA^G^G^GBRONXはNEW YORKに変更する必要があります。 - 派生都市の例^ G ^ G ^ G ^ GNEW YORK ^ GNY ^ G10457 ^ G10457 ^ G ^ GBRONX郡845600^G-73.898500^G325^GSPU^GZ1^G^G^G^G^G^G ^ G^ニューヨーク-ニューアーク-ジャージー市、NY-NJ-PA首都圏統計地域^G35620^GE020^GZC5X^GMMMMVVVV ^G36005039500

例 2: ID 2 の行を選択します。この例では、位置9のMANHATTANをNew York(位置40)に変更する必要があります。 2^G^G^G^GMANHATTAN^GNY^G^GUSA^G^G^GMANHATTANはNEW YORKに変更する必要があります。 - 派生都市の例^ G ^ G ^ G ^ GNEW YORK ^ GNY ^ G ^ G ^ G ^ GNEWヨーク^G-73.966249^G425^GSPU^GG3^G^G^G^G^G^G^ ^G^G^G^G^G^GMMMMVVM^G

助けてもらえますか?

答え1

それぞれが^GControl-G文字であると仮定します。つまり、ファイルは\aASCIIベル文字()を使用して区切られ、各行の5番目のフィールドを15番目のフィールドの値に設定しようとします。

awk -F '\a' 'BEGIN { OFS=FS } { $5 = $15 }; 1' file >newfile

これは、フィールド区切り文字をASCIIベル文字に設定するために使用されます-F '\a'。次に、出力フィールド区切り文字を同じ文字に設定し、5番目のフィールドを15番目のフィールドの値に更新します。コードを後続すると、変更された1レコードが出力されます。結果は、newfileこの例で呼び出されたファイルに書き込まれます。

最初のフィールド2または最初のフィールドで3始まる行にのみ影響し、次を使用しますか?

awk -F '\a' 'BEGIN { OFS=FS } $1 == 2 || $1 == 3 { $5 = $15 }; 1' file >newfile

結果は、デモ目的でのみマークダウンテーブル形式で指定されます。 4列はe列、15列はo列です。

第二 D 金利 F G 時間 ジェイ K N ああ キュー アル字型 S ティー あなた V 勝つ X ワイ ああ BB CC DD この FF gg ヘヘ 二つ ジエジへ 二つ mm 優しい ああ PP QQ ¥¥ 春夏シーズン TT よく ウェイウェイ WW
サム ニューヨーク ニューヨーク 10,457 アメリカ ブロンクスはニューヨークに変更する必要があります - 派生都市の例 ニューヨーク ニューヨーク 10,457 10,457 ブロンクス郡 ブロンクス ニューヨーク アメリカ 40.846… -73.898… 325 SPU Z1 ニューヨーク - ニューアーク - ジャージー、ニューヨーク - ニュージャージー - ペンシルベニア州首都圏の統計地域 35,620 E020 ZC5X MMMMMVVV 36,005,039,500
2 ニューヨーク ニューヨーク アメリカ マンハッタンはニューヨークに変更する必要があります - 派生都市の例 ニューヨーク ニューヨーク ニューヨーク アメリカ 40.783… -73.966… 第425話 SPU G3 MMMMMVVM

答え2

SEへようこそ。いくつかの考え:

  • ファイルをパイプしhexdumpたり、xxd人間が読むことができる表現を表示します。
  • stringsファイルから読み取れるテキストを抽出するために使用されます。私の考えでは、これがあなたに役立つと思います。
  • cutおよび/またはheadプラス記号を使用してtail部分行を抽出するか、それぞれ行を選択します。sedあるいは、awk彼らはあなたの友人になることができますが、あなたがそれを使用する方法を学ぶ場合にのみ可能です。数年かかります。

場所に基づいて文字列を抽出する方法

この質問に基づいて話すのは難しいです。

出力と比較する必要があります

ソリューションを作成してもらいますか?何を試してみましたか?提案どおりに読んでいますかman awk?それとも、Linuxはヒンディー語の文書を提供しませんか?

はい

もし文字列は長さが固定されていますもしファイルに改行文字がないため、単一のcut呼び出しを使用できます。

$ echo my long string | cut -c4-8                                                 

出力:

long

気づくデータをよりよく表示するには、エディタまたはマークダウン形式を使用してください。

答え3

まず、すべてのCtrl + G文字を見つけて|(パイプ)に置き換えました。

sed 's/^G/|/g' test.csv > output.csv

以下を使用して行全体を印刷できます。

grep ^6 output.csv

6住民登録番号です。

6|LAKELINE MALL|||AUSTIN|TX||USA|||MALL EXAMPLE - POI|11066 PECAN PARK BLVD|||AUSTIN|TX|78613|78613||TRAVIS||AUSTIN|CEDAR PARK|USA||||||||30.468408|-97.803570|140|SPU|NA||||||||||||UUUUUVVM|

関連情報