テキストファイルの最初の列を6から現在の値を減算した値に置き換えます。

テキストファイルの最初の列を6から現在の値を減算した値に置き換えます。

スペースで区切られた次のファイルがあります。

2.5   235215           3.1925
3.7   125255           1.3125

最初の列を6から現在の値を減算した値に変更する必要があります。必要な結果は次のとおりです。

3.5   235215           3.1925
2.3   125255           1.3125

Bashスクリプトを使用してこれをどのように実行できますか?

頑張った

$KMAX=6
sed -E "s/^(([^ ]+ +){3})$1  /\1$KMAX-$1 /" $1

ベストアンサー1

これは次の方法で簡単に解決できますawk

awk -v kmax=6 '{$1=kmax-$1}1' file.txt 
  • これにより、値を内部で使用可能な変数6として取得できます。awkkmax
  • プログラムは$1最初の列を算術結果に置き換えますkmax-$1
  • 1アクションブロックの外側の一見で「失われた」結果は、すべての修正を含む現在の行を印刷することです。

注:スペースで区切られた列の場合awkのみ一つスペースは出力で区切り文字として機能するため、結果は次のようになります。

3.5 235215 3.1925
2.3 125255 1.3125

おすすめ記事