Замена столбца данных в текстовых файлах командой Linux - PullRequest
2 голосов
/ 15 сентября 2009

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

Ответы [ 3 ]

3 голосов
/ 15 сентября 2009
awk ' { $2="<STRING>"; print } ' <FILENAME>
2 голосов
/ 17 ноября 2012
cat INFILE | perl -ne '$ln=$_;@x=split(/","/); @a=split(/","/, $ln,8);@b=splice(@a,0,7);  $l=join("\",\"", @b); $r=join("\",\"", splice(@x,8)); print "$l\",\"10\",\"$r"'

Это пример, который меняет 10-й столбец на «10». Я предпочитаю это, поскольку мне не нужно считать соответствующие скобки, как в методике sed.

1 голос
/ 15 сентября 2009

Простой и дешевый хак:

 cat INFILE | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\1\tREPLACEMENT\t\3/' > OUTFILE

тестирование:

 echo -e 'one\ttwo\tthree\none\ttwo\tthree' | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\1\tREPLACEMENT\t\3/'

принимает

 one    two three
 one    two three

и производит

 one    REPLACEMENT three
 one    REPLACEMENT three
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...