Files

是否可以編寫一個腳本,將“#”附加到以大寫字母開頭的文件的任何行?

  • June 30, 2020

為了使學校項目更容易,我想在每行附加一個分隔符,以帶有 bash 腳本的大寫字母開頭。誰能幫幫我?我已經嘗試與 case 命令一起逐行讀取文件,但它不起作用我真的不明白我在做什麼。這就是我到目前為止所擁有的:(我是腳本新手,別惹我)

#!/bin/bash
input=/home/user/file
while IFS= read -r var
do
       case [A-Z]
               sed 's/^/#/' file
done

您不使用 shell 循環來處理 text。處理文本由文本處理工具完成,這些工具一次處理一行輸入:

#! /bin/sh -
input=/home/user/file
sed 's/^[[:upper:]]/#&/' < "$input"

#在. ^_$input

在這裡,大寫字母由語言環境決定。它將包括 ABCDEFGHIJKLMNOPQRSTUVWXYZ 英文字母,可能還包括 Á、Ź 或 Π(如果存在)。

如果您只想限制為 ABCDEFGHIJKLMNOPQRSTUVWXYZ,您可以這樣寫:

sed 's/^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/#&/' < "$input"

[A-Z]根據語言環境,它本身可能會匹配任何東西。您還會找到匹配abcdefghijklmnopqrstuvwxy(not z) 的系統。在大多數係統上,它會匹配 Á,但不會匹配 Ź(如果存在於語言環境的charmap 中)。它甚至可以匹配字元序列(多字元整理元素,如 Hungarian Ddzs)。

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