изменить 3d столбец из 335 случайных строк с помощью bash - PullRequest
0 голосов
/ 20 мая 2019

У меня есть файл с более чем 3000 строк и 3 столбцов. На данный момент третий столбец содержит только «0» в каждой строке. Я хотел бы случайным образом выбрать 335 строк и изменить «0» в третьем столбце на «1» (в том же файле, если это возможно).

Я пробовал что-то с shuf, но оно не работает:

shuf -n 335 myfile.txt | awk -d'\t' '$3==1'

Заранее большое спасибо!

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Если порядок строк вообще не имеет значения, как вы говорите в комментариях, вы можете использовать это:

awk 'BEGIN{FS=OFS="\t"} NR<336{$3=1}1' test.txt | shuf
0 голосов
/ 20 мая 2019

Это, вероятно, то, что вы действительно хотите:

cat -n file | shuf | awk 'BEGIN{FS=OFS="\t"} NR<=355{$3=1} 1' | sort -k1,1n | cut -f2-

например,

$ cat file
1
2
3
4
5

$ cat -n file | shuf | awk 'NR<=2{$0=$0 " modified"} 1' | sort -k1,1n | cut -f2-
1
2
3 modified
4
5 modified

Выше показано изменение 2 из 5 строк ввода и вывод всех строк в исходном порядке.

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