2009-08-13 7 views
0
sed 's/^#//g' <kam_account_calls.txt> kam_account_calls1.txt 

Cette commande supprime # du début de la ligne.besoin de la même logique dans les fenêtres que SED ci-dessous

Veuillez me faire savoir comment adopter la même fonctionnalité dans l'interpréteur de commandes Windows.

+0

C'est le troisième * * fois que vous avez posé cette question! Qu'est-ce qui se passe avec ça? –

Répondre

0

Il n'y a aucune fonctionnalité dans DOS pour le faire dès la sortie de la boîte, mais vous pouvez toujours utiliser l'un des nombreux ports de sed pour Windows, comme this one.

Modifier répondre à commenter: Comme les DOS batchfiles n'exécutent que les commandes DOS (soit les commandes internes de CMD ou de programmes), vous ne pouvez pas sans ajouter un outil comme sed. "Nous ne pouvons pas utiliser CMD": Non, pas sous DOS - CMD n'a pas de fonctionnalité qui lit les fichiers et les manipule. Vous devez utiliser un programme existant comme sed ou awk ou en écrire un vous-même. Pardon. Même Unix/Linux n'a pas de fonctionnalité intégrée, mais ils empaquetent sed et awk en tant que programmes prêts à l'emploi. Ce n'est pas le cas pour DOS.

Évidemment, Windows a ajouté des extensions pour faire de telles choses en utilisant des variables d'environnement (chapeaux de Johannes Rössel). Mon DOS sait à quel point il a vieilli avec moi.

+0

pouvons-nous faire un fichier batch qui peut faire la même fonctionnalité – Irveen

+0

je ne veux pas utiliser sed ........ pouvons-nous utiliser cmd pour résoudre notre but .... et faire la même chose wat sed fait – Irveen

+0

Irveen: Dans le cas général: non. Mais ce que sed fait ici est suffisamment simple pour que vous puissiez le faire avec 'cmd'. Vois ma réponse. – Joey

0

vous pouvez utiliser vbscript

Set objFS=CreateObject("Scripting.FileSystemObject") 
strFile = "c:\test\file" 
Set objFile = objFS.OpenTextFile(strFile) 
Do Until objFile.AtEndOfStream 
    strLine=objFile.ReadLine 
    If Mid(strLine,1,1) = "#" Then 
     strLine = Mid(strLine,2) 
    End If 
    WScript.Echo strLine 
Loop 

sortie

C:\test>more file 
# this is a comment 
this is one line # 
blahb labh 

C:\test>cscript /nologo test.vbs 
this is a comment 
this is one line # 
blahb labh 
2

Contrairement à certaines voix dans ce fil, cela peut être fait avec cmd, assez simple même:

@echo off 
rem enable some niceties we need here 
setlocal enableextensions enabledelayedexpansion 

rem loop through the file 
for /f "delims=" %%x in (kam_account_calls.txt) do call :process %%x 

endlocal 
goto :eof 

rem subroutine to remove # if present: 
:process 
set line=%* 
rem if the first character of the line is # 
if [%line:~0,1%]==[#] (
    rem then throw it away 
    echo.!line:~1! 
) else (
    rem else just output the line 
    echo.!line! 
) 
goto :eof 

Cette bouclera le fichier et affichera toutes les lignes # caractères supprimés.

Il ne peut pas être fait en DOS simple, c'est correct (bien que je ne sois pas sûr de cela, certaines personnes ont fait des choses étonnantes là-bas). Mais presque personne qui inclut DOS dans sa question signifie DOS mais plutôt le Windows Command Processor cmd.exe.

Limitations:

  • longueur de ligne limitée à quelque chose autour de 8190 caractères.
  • Trébuchera sur des caractères de coque spéciaux tels que < ou >.
  • Variables d'environnement (ou pseudo-variables, telles que %random% ou %cd% seront élargies.

Il suffit de garder ceux à l'esprit et regarder si ce sera un problème avec votre fichier texte.

Code et exemple de fichier peut être trouvé here

+0

Est-ce que cela fonctionne pour toutes les longueurs de ligne? Que se passe-t-il si l'environnement est plein? Mais congrats, plutôt sympa ... –

+0

Oui, il y a une limite de longueur de ligne, les deux étant dues à 'echo' utilisé (environ 8190 caractères) et utilisant une variable d'environnement (environ 32760 caractères). Les deux devraient suffire pour des fichiers texte assez normaux. J'ai ajouté les limites à la réponse, cependant. Cependant, je ne suis pas tout à fait sûr de ce que vous entendez par «l'environnement est plein». L'environnement est stocké sous la forme d'une séquence de paires clé = valeur, séparées par U + 0000. Si vous n'avez pas assez de mémoire pour tenir * une ligne * d'entrée, je pense que vous avez déjà d'autres sujets de préoccupation. – Joey

0

Installez Cygwin, alors vous serez en mesure d'utiliser sed directement.

(pas le shell de commande Windows, je sais, plus comme un shell de commande sur les stéroïdes)