LinuxとMacの行末

LinuxとMacの行末

"output"で始まる行の後に作成されたパスを見つけるテキストファイルを解析しています。行はこれです

output xyz/mypath/

抽出したいxyz/mypath いいえ最後のスラッシュ。

Mac OS X(BSD)とLinuxでこのパスを取得すると、別の動作が表示されます。 basepath=cat $basefile | grep -e ^output\ | cut -d" " -f2 | rev | sed 's@/$@@' | rev

トリッキーな部分があるようです。

sed 's@/$@@

Macでは動作しますが、Linuxでは動作しません。私がしたら

sed 's@/@@ Mac(BSD)ではなくLinuxで動作します。

このトリックは行末のchar $に関連しているようです。これは異なる方法で管理されます(おそらくcatレベルで)。 MacとLinuxの両方のコンソールでタスクを実行する方法でこの問題を解決する方法に関する提案はありますか?

ベストアンサー1

私はOSXマシンに簡単にアクセスできませんが、とにかくあなたのアプローチは不必要に複雑です。次のようにしてください(実際の入力に応じて)。

basepath=$(grep ^output "$basefile" | awk '{print $NF}' | sed 's/[/]$//'

または

basepath=$(awk '/^output/{print $2}' "$basefile" | sed 's/[/]$//')

でも

basepath=$(grep -oP '^output\s+\K.+(?=/)' "$basefile")

または

basepath=$(perl -lne 'print $1 if /^output\s+(.+)\//' "$basefile";

おすすめ記事