![|で区切られた単語を含むファイルから{9で始まる}行の2番目と3番目の単語を抽出するには? [閉鎖]](https://linux33.com/image/85402/%7C%E3%81%A7%E5%8C%BA%E5%88%87%E3%82%89%E3%82%8C%E3%81%9F%E5%8D%98%E8%AA%9E%E3%82%92%E5%90%AB%E3%82%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%7B9%E3%81%A7%E5%A7%8B%E3%81%BE%E3%82%8B%7D%E8%A1%8C%E3%81%AE2%E7%95%AA%E7%9B%AE%E3%81%A83%E7%95%AA%E7%9B%AE%E3%81%AE%E5%8D%98%E8%AA%9E%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
case "$3" in
-id)
echo "Lines matches with the pattern $4 :"
#grep -oP $4 $2
;;
esac
答え1
次のawkコマンドを試してみてください。
awk -F"|" '$2 ~ /^9/ && $3 ~ /^9/ { print $2,$3 }' filename
出力には2番目の単語と3番目の単語の間にスペースが含まれていますが、必要に応じてOFSを使用してこれを設定できます。
編集する:
あなたのプログラムは次のとおりです。
case "$3" in
-id)
echo "Lines matches with the pattern $4 :"
filename=$2
id=$4
echo "`grep "^$id" $filename | awk -F"|" -v ID="$id" '$1==ID'|awk -F "|" '{print $2,$3,$5}'`"
;;
esac