ошибка в кодировании Unix и sed

#bash #unix #sed #awk

#bash #unix #sed #awk

Вопрос:

У меня два вопроса. Во-первых, иногда, когда я кодирую в Unix и ввожу команду, и я делаю это неправильно, я получаю новую строку без моего запроса, и независимо от того, что я печатаю, ничего не происходит, пока я не выйду и не войду снова. Кто-нибудь знает, почему это происходит?

Во-вторых,

У меня есть файл, который состоит из: данные пространства имен Мне нужно получить данные, я слышал, что я должен использовать awk или sed, но я не уверен, как это сделать. Любая помощь приветствуется.

Ответ №1:

Деннис уже хорошо ответил на ваш первый вопрос. (Примечание: пожалуйста, задавайте только один вопрос за раз!)

Что касается вашего второго вопроса, это можно сделать гораздо проще.

 awk '{ print $2 }' yourfile
  

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

 awk '{ print $2 }' yourfile > newfile
  

Комментарии:

1. ну, это дало бы мне второй фрагмент первой строки, но как насчет второй строки?

2. @EricAnderson, эта команда работает во всех строках. Я полагаю, что существует другой оператор awk или ключевое слово, которое нужно указать, чтобы работать только с первой строкой.

Ответ №2:

Первый вопрос:

Введите echo " , и это произойдет. Unix поддерживает многострочные команды.

Пример:

 echo "
is a multi-line
command"
  

Введите " и введите для завершения.

Второй вопрос:

Вот ссылка на хороший учебник по AWK: Awk — учебное пособие и введение

В основном, вы используете

 awk '{ print "echo " $2 }' filename | sh
  

например, для эха всех данных.

$2 обращается ко второму фрагменту информации каждой строки (фрагменты разделены пробелами).

print "echo " $2 приведет к выводу awk echo data .

Наконец, вы sh переходите к выполнению команды вывода awk.

Комментарии:

1. Кроме того, некоторые команды по умолчанию принимают ввод на стандартном интерфейсе. Если вы запустите cat , это будет происходить до тех пор, пока вы не введете ctrl-c, ctrl-d или ctrl- для выхода из программы.

2. @EricAnderson, это одинарные кавычки.

3. @EricAnderson: Да, это одинарные кавычки, также называемые апостроф. Что вы подразумеваете под «галочками»?

4. @Keith Thompson: Я думаю, он имеет в виду серьезные акценты.