Как я могу скопировать и вставить текстовые строки через различные файлы в сценарии удара?

От определенного числа файлов я должен создать новый файл, где каждая строка текста является последовательностью соответствующих строк из моих исходных файлов. Так, скажем, у меня есть два файла со структурой как это:

File1:

AAAA
BBBB
CCCC

File2:

XXXX
YYYY
ZZZZ

Я должен объединить их для получения результата как:

AAAAXXXX
BBBBYYYY
CCCCZZZZ

Как я могу сделать это из сценария удара?

3
задан 23 October 2016 в 20:04

3 ответа

Используйте paste команда:

paste -d '' File1 File2

По умолчанию, paste соединения строки с вкладками, таким образом, мы должны использовать -d опция сказать этому использовать пустую строку для присоединения.

9
ответ дан 1 December 2019 в 13:03

Через путь:

awk '{getline x<"file2"; print $0x}' file1
  • getline x<"file2" читает всю строку из file2 и содержит в x переменную.
  • print $0x печатает целую строку от file1 при помощи $0 затем x который является сохраненной строкой file2.
2
ответ дан 1 December 2019 в 13:03

paste путь состоит в том, чтобы пойти, но ради полноты вот a bash сфокусированное решение (с небольшой справкой от seq, и wc):

for _ in $(seq 1 $(wc -l <f1.txt)); do \
            read -u 3 one; read -u 4 two; echo "${one}${two}"; done 3<f1.txt 4<f2.txt

Здесь мы отправляем содержание файлов f1.txt, и f2.txt через дескрипторы файлов 3, и 4. read чтения от соответствующего FDs, и echo печатает вывод в нужном формате.

Повторение остановится после f1.txt концы, здесь _ одноразовая переменная.


Лучше, просто bash, В зависимости от readстатус выхода, когда EOF достигнут с a while создайте (благодаря steeldriver):

while IFS= read -ru3 one && IFS= read -ru4 two; do echo "${one}${two}"; done 3<f1.txt 4<f2.txt

Пример:

$ cat f1.txt
AAAA
BBBB
CCCC

$ cat f2.txt
XXXX
YYYY
ZZZZ

$ for _ in $(seq 1 $(wc -l <f1.txt)); do read -u 3 one; read -u 4 two; echo "${one}${two}"; done 3<f1.txt 4<f2.txt
AAAAXXXX
BBBBYYYY
CCCCZZZZ

$ while IFS= read -ru3 one && IFS= read -ru4 two; do echo "${one}${two}"; done 3<f1.txt 4<f2.txt
AAAAXXXX
BBBBYYYY
CCCCZZZZ
1
ответ дан 1 December 2019 в 13:03

Другие вопросы по тегам:

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