Linux

複製文本文件中的行並將修改的行添加到同一文件中的行尾

  • September 8, 2018

我想複製文本文件中的行動態編輯它以將所有 / 替換為 | 並粘貼在同一行的同一行。

我在文本文件中有第一行:

http://webpage.com/(name-never-changes)/aCcboeasdfdRD/asdfasdft21.jpg

在 (name-never-changes) 和 .jpg 之間複製文本

/aCcboeasdfdRD/asdfasdft21

更改為 / 為 |

|aCcboeasdfdRD|asdfasdft21

並添加到 URL 所在行的末尾,帶有分隔符,分隔符可以是文本或數字或特殊字元

http://webpage.com/(name-never-changes)/aCcboeasdfdRD/asdfasdft21.jpg  (separator)  |aCcboeasdfdRD|asdfasdft21

這應該適用於具有不同 URL 的多個文本文件

我無法創建新文件並合併它們,這應該是即時的,因為文本文件的名稱不同而且我不知道文件名

試試這個,

awk -F '[/.]' '{print $0" (separator) |"$(NF-2)"|"$(NF-1)}' file

http://webpage.com/(name-never-changes)/aCcboeasdfdRD/asdfasdft21.jpg (saperatot) |aCcboeasdfdRD|asdfasdft21
  • /.兩個欄位分隔符
  • $0列印整行
  • $(NF-2) $(NF-1)倒數第三個和第二個欄位

如果你想保存在文件中

選項1:(如果它有幾行)

echo "`awk -F '[/.]' '{print $0" (separator) |"$(NF-2)"|"$(NF-1)}' file`" > file

選項2:(如果是大文件)

awk -F '[/.]' '{print $0" (separator) |"$(NF-2)"|"$(NF-1)}' file > tempFile ; mv tempFile file

對於文件夾中的多個文件:

cd /path/to/dir
for file in `ls`
do
   echo "`awk -F '[/.]' '{print $0" (separator) |"$(NF-2)"|"$(NF-1)}' $file`" > $file
done

引用自:https://unix.stackexchange.com/questions/466442