Я очень новичок в написании сценариев оболочки, задачи в моей руке разделены на 2 сценария оболочки.
Я хочу выполнить конвейеризацию двух сценариев оболочки (которые должны запускаться из другого каталога, а не там, где сценариинаписаны) и который в настоящее время работает хорошо.
Первый сценарий оболочки содержит:
Объединение около 90 файлов .lvm, хранящихся в папке.
Обрезает каждый .lvm
файл, удаляет заголовок и кадрирует до конца данных.
Теперь мне нужно один раз напечатать значение в 18-м столбцекаждый файл был повторен, чтобы различать конец файла (здесь я пытаюсь написать 500)
#!/bin/sh
clear
for file in "$1/"*.lvm; do
a=$(awk '/X_Value/{ print NR; exit }' "$file")
b=$(awk 'END {print NR}' "$file")
awk '{OFS= "\t"} {NR==$b $18,"500"}' "$file"
#specified row is $b and column number is 18
sed "s|\$a|${b}|" "$file"
done
Второй сценарий оболочки содержит:
- Чтение определенных столбцов изпервый сценарий оболочки.
Что такое:
#!/bin/sh
clear
while read line; do
sleep 1
awk -v OFS='\t' '{print $1, $2, $3, $8, $18}'
done
Выводить сейчас:
file1 196287,265000 3,902977 -39,226354 0,873427
file1 196287,266000 3,890747 -51,032699 0,519405
file1 196287,267000 3,900080 -51,472975 -0,446108
....
....
....
file2 196287,268000 3,904586 -50,627182 -0,092086
file2 196287,269000 3,870793 -30,687314 1,195265
file2 196287,270000 3,897505 -30,073244 0,744692
....
....
Желаемый вывод:
file1 196287,265000 3,902977 -39,226354 0,873427 0
file1 196287,266000 3,890747 -51,032699 0,519405 0
file1 196287,267000 3,900080 -51,472975 -0,446108 500
...
...
...
file2 196287,268000 3,904586 -50,627182 -0,092086 0
file2 196287,269000 3,870793 -30,687314 1,195265 0
file2 196287,270000 3,897505 -30,073244 0,744692 500
...
...