Как удалить символы новой строки обоих типов, используя только bash

Используйте awk попробуйте следующее:

$ awk '{print $2, $4}' file

Где $ x - позиция слова, это разделено пробелами

например.

$ echo "I have a nice car" | awk '{print $2, $4}'
have nice
0
10.03.2018, 19:52
2 ответа

На самом деле не существует двух типов новых строк; \n— это просто последовательность символов, пока вы не передадите ее в printf '%b'или какой-либо другой команде, такой как echo -e, которая интерпретирует ее как управляющую последовательность обратной косой черты.

Таким образом, вы можете использовать printf '%b'для преобразования любых \nпоследовательностей в новые строки, а затем удалить все новые строки с помощью подстановки параметров и bash строки C -:

v='ab\n cd                     
 ef
'
printf -v w '%b' "$v"; printf '%s\n' "${w//$'\n'}"
ab cd ef
2
28.01.2020, 02:32

Вы можете просто использовать эхо. Без -e и ", echo видит \n как строку, и вы можете удалить ее, используя подстановку параметров.

echo ${v//\\n}
0
28.01.2020, 02:32

Теги

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