Разделение определенных номеров столбцов с помощью сценария оболочки

для оболочки gnome -, нужно просто отредактировать этот файл:/usr/share/X11/xkb/symbols/pc . а затем перезагрузиться.

0
29.09.2020, 07:46
2 ответа

Приведенный ниже скрипт bash вставит первые два столбца как есть, а следующие 2 столбца, разделенные на 4, в файл output.txt.

#!/bin/bash

file="/path/file.txt"
while IFS= read -r line
do
col1=$(echo "$line" | awk {'print $1'})
col2=$(echo "$line" | awk {'print $2'})
col3=$(echo "$line" | awk {'print($3/4)'})
col4=$(echo "$line" | awk {'print($4/4)'})
echo "$col1 $col2 $col3 $col4" >> output.txt
done < "$file"

Надеюсь, это то, чего вы хотели.

0
18.03.2021, 23:02

Вы можете выполнить эту задачу с помощью awk , который является стандартным инструментом bash для обработки текста, арифметических операций с файлами и т.п.

Я вижу, что входной файл изменился, поэтому давайте посмотрим printf, см. здесь , как определить формат аргументов. Также NR<=5для первых 5 строк,остаться нетронутым и быть напечатанным в виде заголовков

awk 'NR<=5 {print; next} {$3=$3/4; $4=$4/4}
    {printf "%3s %8.3f %8.2f %8.2f\n", $1, $2, $3, $4}' file

Выход:

# MarkerIndex 
# TiltAngle (degrees)
# PositionX (px)
# PositionY (px)
# 
  0  -62.450   381.66   301.25
  0  -60.460   376.96   301.34
  8   15.890   383.99   570.36
  8   17.890   384.74   570.35
  8   19.890   385.65   570.52
  8   21.900   386.49   570.58
  8   23.900   387.66   570.60
  8   25.900   388.63   570.42
  8   28.000   389.84   570.47
  8   30.090   390.89   570.33
  8   32.190   392.16   570.20
  8   34.280   393.28   570.14
1
18.03.2021, 23:02

Теги

Похожие вопросы