![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Windows10にCygwinを入れ、スクリプトを書いてます。
HTMLを出力するスクリプトを書いているのですが、最後の最後でエラーでつまずいてしまいました。
どなたかご教授お願いできませんでしょうか。
while read line
do
fpat1=`echo $line | cut -f 1 -d ","`
fpat2=`echo $line | cut -f 2 -d ","`
fpat3=`echo $line | cut -f 3 -d ","`
fpat4=`echo $line | cut -f 4 -d ","`
awk -F "," -v fpat1=${fpat1} -v fpat2=${fpat2} -v fpat3=${fpat3} -v fpat4=${fpat4} '{
if ( $1 == fpat1 ){
printf $1 "," $2 "," $3 "," $4 "," $5 "," $6 "," $7 "," $8 "," $9 "," $10 "," $11 "," $12 "," $13 "," $14 "," $15 "," $16 "," $17 "," $18 "," $19 "," "0,0," fpat3 "," fpat4 >> "final.csv"
}
}' product_18366273.csv
done < middle2.csv
fpat3とfpat4には下記のような文字列が入っています。
<h3 class="table_name">型式一覧</h3><table class="info_table">型式<tr><th>有効内容積</th><th>外形寸法</th><th>重量</th></th></tr><tr><td><a href="https://item.rakuten.co.jp/hogehoge/p0737/">SCR- …×D318(+20)×H865mm</td><td>22kg</td><td>単相100V</td></tr><tr><td><a href="https://item.rakuten.co.jp/hogehoge/p0738/">SCR- …×D318(+20)×H865mm</td><td>27kg</td><td>単相100V</td></tr><tr><td><a href="https://item.rakuten.co.jp/hogehoge/p0740/">SCR- …×D473(+20)×H790mm</td><td>29kg</td><td>単相100V</td></tr><tr><td><a href="https://item.rakuten.co.jp/hogehoge/p0739/">SCR- …×D473+(20)×H935mm</td><td>32kg</td><td>単相100V</td></tr></table>
エラー出力は下記となります。
awk: コマンドライン:1: class="table_name">型式一覧</h3><table
awk: コマンドライン:1: ^ 式内に無効な文字 '▒' があります
どなたかお願いします。
No.1ベストアンサー
- 回答日時:
・Unix/Linuxのシェルでは、変数等の展開した後でコマンドを解釈します。
・引用符は、空白等を分けずに一つの引数として認識させるための手段です。
分割や展開が発生しない状況では不要です。
逆に分割したく無い場合は引用符や\が必要です。
・上記2つから考えられることは
-v fpat1=${fpat1}
が 展開されて
-v fpat1=\<h3 class=\"table_name\"\>型式一覧\</h3\>\<table
と解釈される。(h3 とclassの間の空白が引数の区切りだと解釈される)
↓
-v fpat1=\<h3 で変数に代入.
class=\"table_name\"\>型式一覧\</h3\>\<table の部分はオプションの無い引数として解釈される
→awkのスクリプトとして解釈される
→awkの文法に合わないので Syntax Error
ということがおこっているのでしょう。
${fpat1} をひとまとめに扱いたいのなら、"${fpat1} " と引用符でくくることです。
※ fpat3="'"${fpat3}"'" は意味がありません。
先頭と末尾に「引用符文字」が付くだけで、引用符としてに機能は付きません。
実際にどう展開されているかは、 シェルの -x オプションで確認できます。
方法1: set -x コマンドを実行する (解除はset +x)
方法2 :( sh スクリプト で実行している場合は) sh -x スクリプト
方法3 : スクリプト先頭で#!/bin/sh等としている場合は #!/bin/sh -x にする
ご丁寧な分かりやすい回答頂きありがとうございます。
無事、文字列として値を渡す事ができ、スクリプトが完成しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript チェックボックスのオン⇔オフに応じて並列の画像の濃さを動的に変化させたい 1 2021/10/31 22:05
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript フォームの状態やGETのURLは保持しつつ、チェックボックスON/OFFした瞬間にSUBMITしたい 3 2021/10/24 01:12
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS border-collapseを設定するとbackground:linear-gradientが乱れ 4 2021/12/17 20:44
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
シェルスクリプトで、空白(スペース)を含む変数をawkに渡したいのです
その他(プログラミング・Web制作)
-
awkでスラッシュがある動的変数の抽出について
その他(プログラミング・Web制作)
-
AWKスクリプトの文字コードについて
その他(プログラミング・Web制作)
-
-
4
awkで切り出した2つのデータを変数に代入
UNIX・Linux
-
5
awk について、awk -f による実行と、#! /usr/bin/awk -f による違い
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急です。kubuntu24.04ltsをUS...
-
Ubuntuで数字だけのユーザーア...
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
ubuntuで デイスク/deb/loopと...
-
ssl_error_logのエラー内容(AH...
-
ubuntuのシャットダウンが進ま...
-
ssl_request_logの必要性について
-
tarで纏める際に、複数場外した...
-
Lubuntuのデスクトップのアイコ...
-
shellscript内のコマンドを、su...
-
Ubuntu でinvalid filenameとな...
-
UbuntuにROSをインストールしたい
-
linuxサーバーのキャッシュをク...
-
ファイル・フォルダーの削除方法
-
Kindleアプリについて
-
linuxのIMEの件
-
AWSでSSH接続をしたいのですが...
-
Linux のシェルスクリプトの強...
-
プログラミングPC、LinuxのOSパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
Ububtuでファイル共有できない...
-
WineのRufusでデバイスを検知す...
-
ubuntuで デイスク/deb/loopと...
-
複数のフォルダを同時に参照し...
-
linuxのIMEの件
-
ViエディタとVimエディタの違い...
-
LinuxでSSH接続について
-
AWSでSSH接続をしたいのですが...
-
Kindleアプリについて
-
ubuntuのシャットダウンが進ま...
-
このエラー内容について教えて...
-
Ubuntu on Xorgのログインについて
-
linuxサーバーのキャッシュをク...
-
shellscript内のコマンドを、su...
-
VirtualBox ゲストOSにPC内蔵HD...
-
LinuxMintが突然フリーズする
-
Linux Mint 日本語入力できなく...
-
ssl_error_logのエラー内容(AH...
おすすめ情報
awk -F "," -v fpat1=${fpat1} -v fpat2=${fpat2} -v fpat3="'"${fpat3}"'" -v fpat4="'"${fpat4}"'" '{
awkに渡す際に変数を"'"で囲ってみました。
エラー内容が変わったのですが、/を文字列として認識していないようです。
awk: コマンドライン:1: class="table_name">型式一覧</h3><table
awk: コマンドライン:1: ^ 式内に無効な文字 '▒' があります
awk: コマンドライン:1: class="table_name">型式一覧</h3><table
awk: コマンドライン:1: ^ syntax error
日本語も文字化けしているのでしょうか。