Как я могу прочитать данные, разделенные пробелом на два столбцы и вывести значение из столбца 1, которое может содержать пустое или пустое значение рядом с ним в столбцах 2 в файл, в противном случае выполните действие, если оно имеет значения в обоих столбцах:
набор данных:
User Numbers
u1 12
u3 45
u3 20
u4 5
u5
u6 7
u7 32
u8
u9 10
u10 14
Большое спасибо за ваш ответ... Я попробовал ваш ответ и некоторая часть действительно работала... кроме столбца 1, который показывал неправильного пользователя для значения в столбце 2. В итоге я разобрался с этим и создал что-то вроде этого:
while IFS= read -a line; do COL1=$(printf "%s\n" "${line[@]}" | awk '{print $1}') COL2=$(printf "%s\n" "${line[@]}" | awk '{print $2}') SRCH1=$(ldapsearch "(uid=${COL1})" | grep uid: | awk '{print $2}') SRCH2=$(ldapsearch "(uid=${COL1})" | grep initials: | awk '{print $2}') SRCH3=${SRCH2} if [ "$COL1" = "$SRCH1" -a "$COL2" = "$SRCH2" ]; then echo "UID: $SRCH1" echo "ИНИЦИАЛЫ: $SRCH2" else echo "НЕТ UID: $COL1" echo "НЕТ ИНИЦИАЛОВ: $COL2" fi done < datafile8
Вы можете сделать это, например, с помощью awk. Переменные $ 1
и $ 2
содержат текст столбцов, а NR
содержит количество столбцов.
awk '
NR == 1 {print "Only one column: " $1}
NR == 2 {print "The sum of the two columns is", $1 + $2}
'