###背景
以下のような入力ファイルがあるとします。
bash
1$ cat A_result.txt 21,AAAAA 32,BBBBB 4NA,CCCCC 5NAME,DDDDD 65,DDDDD
このデータをawkで加工し、sed '/^NA\t/d'
のコマンドにより1列目がNA
の行のみ削除、NAME
の行は残しました。NAME
の行が残っていることは、grep
によって確認できました。
bash
1$ cat A_result.txt | awk -F"," -v OFS="" -v hoge="NUMBER" '{print $1,"\t",hoge}' | sort | uniq | sed '/^NA\t/d' | grep NA 2NAME NUMBER
そこで、while文を使ってlist.csv
から得た値で入力ファイルを指定し、連続で上記の処理を行うスクリプトを作成しました。
bash
1#!/bin/bash 2declare -a COLS 3cat list.csv | while IFS=, read -a COLS; do 4 cat "${COLS[0]}"_result.txt | awk -F"," -v OFS="" -v hoge="${COLS[0]}" '{print $1,"\t",hoge}' | sort | uniq | sed '/^NA\t/d' >> result.txt 5 echo "${COLS[0]}" 6done
ところが、上記のスクリプトによって生成されたresult.txt
を確認すると、1列目がNA
の行もNAME
の行もどちらも削除されてしまいました。
bash
1$ grep NA result.txt 2(一致なし)
###質問
前置きが長くなってしまい申し訳ございませんが、while文内入れた時にsedコマンドの挙動が変わってしまって困っています。原因そして解決法をご教示願います。使用している環境は、MacOS Kernel Version: Darwin 20.2.0、bash5.0です。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー