Некоторые приложения игнорируют настройки Xmodmap

подход Джозефа nullglob является наиболее элегантным, но если вы не хотите или не можете его использовать (например, оболочка, отличная от bash или более старая версия bash), вы также можете сделать это (при условии, что имена ваших файлов не содержат символов новой строки):

file="~/Desktop/externalServers.txt"
while IFS= read -r javaFile
do
  echo "The file $javaFile has : " >> "$file"
  grep -E '^[^/]{2}.*http' "$javaFile" >> "$file"
  grep -E '^[^/]{2}.*ftp' "$javaFile"  >> "$file"

  echo "----------------------------------------" >> "$file"
  ## The -i flag enables in-place editing so you don't need
  ## to fiddle about with temp files.
  sed -i -e "s/[[:space:]]\+/ /g" "$file"
  sed -i -n '/[^[:space:]]/p' "$file"
done < <(find . -maxdepth 1 -name '*.java')

IFS = устанавливает пустой разделитель полей ввода, чтобы можно было правильно работать с именами файлов, содержащими пробелы, а параметр -r для читать означает, что обратная косая черта не обрабатываются особым образом (в случае, если ваши имена файлов могут содержать их). Конструкция называется подстановкой процесса и представляет собой способ передачи вывода одной команды в качестве ввода другой.

Я ввел переменную $ file , поэтому вам не нужно редактировать каждую строку, если вы когда-либо захотите изменить имя выходного файла.

Обратите внимание, что я использовал флаг -i для sed, который позволяет редактировать исходный файл и устраняет необходимость во временных файлах. Также обратите внимание, что нет причин делать rm foo.txt; mv bar.txt foo.txt , вы всегда можете просто сделать mv bar.txt foo.txt , и это перезапишет целевой файл. Теперь я понятия не имею, что эта команда должна была делать:

sed 's/^\n//' ~/Desktop/externalServers.txt >> ~/Desktop/externalServersTemp.txt

Я предполагаю, что вы хотите, чтобы она удаляла пустые строки, но это не сработает, поэтому я изменил ее выше с помощью

sed -i -n '/[^[:space:]]/p' ~/Desktop/externalServers.txt

- n подавляет стандартное поведение sed при печати каждой строки, / [^ [: space:]] / будет соответствовать любым строкам, которые соответствуют любому непробельному символу и p в конце означает, что будут напечатаны эти строки и только эти строки. Если это не то, что вы хотели сделать с помощью команды sed , дайте мне знать, и я внесу необходимые изменения.

1
10.02.2019, 00:30
1 ответ

Это подключаемый модуль (IdeaVim ), который мешает. Он работает, как и ожидалось, с отключенным плагином.

0
28.01.2020, 00:19

Теги

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