Я пытаюсь удалить определенные столбцы из текстового файла в строках, соответствующих строке, но затем оставит остальную часть строк нетронутой.Удалить столбцы, когда строка соответствует условию
Скажем, у меня есть файл (тысячи строк в действительности)
10 12 a
USA John TGCAGG
USA John TGCATG
5 2 b
CAN Tom TGCACG
CAN Tom TGCAAC
....
И я хочу, чтобы создать новый файл, который удаляет 2-й столбец в строках, содержащих TGCA, но оставляет все остальные линии нетронутыми. Я хотел бы видеть:
10 12 a
USA TGCAGG
USA TGCATG
5 2 b
CAN TGCACG
CAN TGCAAC
я могу изменить столбцы печатать на линиях, которые соответствуют с использованием регулярных выражений, чтобы начать AWK или СЭД, но я не могу получить другие линии (которые не изменяются) для печати или сохранить порядок этих линий.
Должен ли я использовать оператор if в awk? Пробовал использовать следующий, но я не думаю, что у меня есть это право.
Я не совсем понимаю, как здесь используется NF или как установить желаемое количество полей ... Что делать, если было 4 столбца, и я хотел сохранить 3 и 4? Или скажем, я хотел сохранить столбцы 1 и 3 и 4 (но не 2)? Есть ли более общий способ сделать это (или объяснить код) без уменьшения полей? –
Весьма сложно удалить столбец в awk. Чтобы предотвратить получение конечных пробелов, я хотел бы сделать что-то вроде этого: [как удалить первые два столбца в файле с помощью оболочки (awk, sed, что угодно)] (http://stackoverflow.com/a/14715189/1983854) – fedorqui
Поэтому, если вы можете позволить себе просто уменьшить 'NF', это нормально. Если он должен быть более сложным, я все равно сделаю какое-то движение столбцов и, наконец, уменьшу 'NF'. – fedorqui